在我的表HTML中我可以通过两种方式获得rd标记:
1.
<td><font size="4" face="Arial"><i>Google</i></font></td>
2.
<td>Google</td>
我在用:
String tdValue = rowDataElement.getAttribute("innerHTML");
现在当'td'定义为第二个选项时,我得到正确的字符串为“Google”,但是当它有其他元素时,我得到完整的元素字符串。
有没有办法总是得到一个元素的内部字符串?
getAttribute()
获取元素的给定属性的值。 getAttribute()
将返回当前值,即使该页面加载后该属性已被修改。此方法将返回具有给定名称的属性的值(如果存在)。如果没有,则返回具有给定名称的属性的值。如果两者都不存在,则返回null。
innerHTML
属性设置或获取描述元素后代的HTML语法。
一个例子 :
WebElement content = element.innerHTML;
content will contain the serialized HTML code describing all of the element's descendants.
所以当你的HTML是:
<td>Google</td>
如果你提到:
String tdValue = rowDataElement.getAttribute("innerHTML");
输出是谷歌(纯文本),因为<td>
标签只有innerText但没有后代。
但是当你的HTML是:
<td><font size="4" face="Arial"><i>Google</i></font></td>
以更简化的方式,HTML DOM看起来:
<td>
<font size="4" face="Arial">
<i>Google</i>
</font>
</td>
现在,如果你提到:
String tdValue = rowDataElement.getAttribute("innerHTML");
根据innerHTML
的文档,提取了描述所有元素后代的序列化HTML代码。此外,如果<div>
或<span>
节点具有包含字符(&)
,(<)
或(>)
的子文本节点; innerHTML分别将这些字符作为&
,<
和>
返回。
因此,您获得完整的元素字符串。
使用Node.getText
或Node.textContent
获取这些文本节点内容的正确副本。