应该使用getInnerHtml()方法吗?
在量角器,有上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()
,这就是为什么量角器没有提到它在文件的原因所在。
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')
可以使用。
在这种情况下,getInnerHtml()
应该用于获取文本,但需要对span
元素执行此操作而不是a
元素。
注意: - getInnerHtml()
也可以用作getAttribute("innerHTML")
in 3.0 getInnerHtml正在被完全删除,我们应该用什么来代替? – jemiloii
@JemiloII您可以改用'.getAttribute(“innerHTML”)' –
getInnerHTML将返回'HTML'内容以及内部的标签,但'的getText()'将只返回'Text'不是'HTML代码'那个标签里面。 – Paras
@pArAs感谢您的评论。我不是在问差异。我在询问实际需要使用此方法的主要原因有两个:理解为什么不推荐使用此方法[实施此eslint规则](https://github.com/alecxe/eslint-plugin-protractor/issues/47 ),并提供更多的信息,当一个人会禁用此规则,实际上需要'getInnerHtml'或'getOuterHtml'。 – alecxe
就我个人而言,我从来没有在测试用例中使用过它们。当我遇到定位器问题时,我只使用了'getInnerHtml()'或'getOuterHtml()',并且我必须完全确定我终于正确登陆了正确的元素 – Gunderson