在附加其他元素时获取Element的innerHTML - Selenium

时间:2018-03-05 11:28:56

标签: html html5 selenium dom html-table

在我的表格HTML中我可以通过两种方式获得rd标记:

1

<td><font size="4" face="Arial"><i>Google</i></font></td>

2

<td>Google</td>

我正在使用:

String tdValue = rowDataElement.getAttribute("innerHTML");

现在当&#39;&#39;定义为它在第二个选项中我得到正确的字符串为&#34; Google&#34;,但是当它有其他元素时,我得到完整的元素字符串。

有没有办法总是为元素获取内部字符串?

1 个答案:

答案 0 :(得分:0)

的getAttribute()

getAttribute()获取元素的给定属性的值。 getAttribute()将返回当前值,即使在加载页面后修改了属性也是如此。此方法将返回具有给定名称的属性的值(如果存在)。如果没有,则返回具有给定名称的属性的值。如果两者都不存在,则返回null。

的innerHTML

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");

输出为 Google (纯文本格式),因为<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分别将这些字符作为&amp&lt&gt返回。

因此,您将获得完整的元素字符串。

解决方案

使用Node.getText  或Node.textContent获取这些文本节点的正确副本&#39;内容。