在量角器中,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:
看来,这就是Protractor没有在文档中提及它的原因。已弃用
WebElement#getInnerHtml()
和WebEleemnt#getOuterHtml()
答案 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")