什么时候应该使用getInnerHtml()方法?

时间:2016-08-02 17:18:01

标签: javascript selenium testing selenium-webdriver protractor

在量角器中,ElementFinder实例上有getInnerHtml() method

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

我认为API list中没有记录它。

在使用selenium测试Web应用程序时是否存在真实世界用例,而getInnerHtml()应该首选而不是getText()

我也看到selenium 2.53 has deprecated this method

  

已弃用WebElement#getInnerHtml()WebEleemnt#getOuterHtml()

看来,这就是Protractor没有在文档中提及它的原因。

1 个答案:

答案 0 :(得分:2)

getText()在元素的开始和结束标记之间获取文本,而getInnerHtml()获取元素的HTML语法。

让我们有一个示例HTML并对a执行两个操作: -

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

getInnerHtml

  • 设置或获取描述元素后代的HTML语法

    <span>link text</span>
    

这是 DOM解析和序列化规范的一部分。

getText()

  • 在对象的开始和结束标记之间设置或获取文本

    link text
    

解释:如果我们使用的是getText(),则只返回确切的文字,即link text,而getInnerHtml()将返回HTML语法,即<span>link text</span>

这基本上取决于要求

  • 如果要求获取HTML语法的HTML语法文本,则应使用getInnerHtml()

  • 如果要求只在两者之间获取元素文本,则应使用getText()

但是有些时候我个人遇到getText()的问题,由于HTML或其他原因的某些设计问题而没有返回元素的文本,因此也可以使用getAttribute('textContent')。 p>

在这种情况下,getInnerHtml()应该用于获取文字,但需要在span元素而不是a元素上执行此操作。

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