2016-08-02 24 views
1

在量角器,有上ElementFinder實例getInnerHtml() method可供選擇:應該使用getInnerHtml()方法嗎?

var elm = element(by.id("myid")); 
expect(elm.getInnerHtml()).toEqual("test"); 

我沒有看到它在API list記錄雖然。

是否有真實世界使用案例在測試使用硒的web應用時,getInnerHtml()應該首選而不是getText()


我也看到selenium 2.53 has deprecated this method

棄用WebElement#getInnerHtml()WebEleemnt#getOuterHtml()

看來這,

,這就是爲什麼量角器沒有提到它在文件的原因所在。

+0

getInnerHTML將返回'HTML'內容以及內部的標籤,但'的getText()'將只返回'Text'不是'HTML代碼'那個標籤裏面。 – Paras

+0

@pArAs感謝您的評論。我不是在問差異。我在詢問實際需要使用此方法的主要原因有兩個:理解爲什麼不推薦使用此方法[實施此eslint規則](https://github.com/alecxe/eslint-plugin-protractor/issues/47 ),並提供更多的信息,當一個人會禁用此規則,實際上需要'getInnerHtml'或'getOuterHtml'。 – alecxe

+1

就我個人而言,我從來沒有在測試用例中使用過它們。當我遇到定位器問題時,我只使用了'getInnerHtml()'或'getOuterHtml()',並且我必須完全確定我終於正確登陸了正確的元素 – Gunderson

回答

2

getText()在元素的開始和結束標記之間獲取文本,而getInnerHtml()獲取元素的HTML語法。

讓我們有一個例子HTML和a執行兩個動作: -

<a><span>link text</span></a> 

getInnerHtml

  • 設置或獲取HTML語法描述元素的後代

    <span>link text</span> 
    

這是DOM解析和序列化規範的一部分。

getText()

  • 設置或獲取對象的開始和結束標記說明之間

    link text 
    

文:如果我們使用getText()它會只返回確切文本,即link textgetInnerHtml()將返回HTML語法,即<span>link text</span>

這基本上取決於要求

  • 如果需要獲取HTML解析的HTML語法文本,則應使用getInnerHtml()

  • 如果要求僅獲取元素文本,則應使用getText()

但有些時候我個人所面臨的問題與getText()不因一些設計問題與HTML或其他原因返回元素的文本,然後也getAttribute('textContent')可以使用。

在這種情況下,getInnerHtml()應該用於獲取文本,但需要對span元素執行此操作而不是a元素。

注意: - getInnerHtml()也可以用作getAttribute("innerHTML")

+0

in 3.0 getInnerHtml正在被完全刪除,我們應該用什麼來代替? – jemiloii

+1

@JemiloII您可以改用'.getAttribute(「innerHTML」)' –

相關問題