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

问题描述 投票:0回答:1

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

1.

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

2.

<td>Google</td>

我在用:

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

现在当'td'定义为第二个选项时,我得到正确的字符串为“G​​oogle”,但是当它有其他元素时,我得到完整的元素字符串。

有没有办法总是得到一个元素的内部字符串?

html html5 selenium dom html-table
1个回答
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");

输出是谷歌(纯文本),因为<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.getTextNode.textContent获取这些文本节点内容的正确副本。

© www.soinside.com 2019 - 2024. All rights reserved.