2016-08-02 41 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”)' –