【问题标题】:Get innerHTML for Element when additional Elements are appended - Selenium附加其他元素时获取 Element 的 innerHTML - Selenium
【发布时间】:2018-08-13 01:10:39
【问题描述】:

在我的表格 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 selenium dom html-table


【解决方案1】:

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(纯文本),因为 &lt;td&gt; 标记只有 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 代码。此外,如果&lt;div&gt; 或&lt;span&gt; 节点具有包含字符(&amp;)、(&lt;) 或(&gt;) 的子文本节点; innerHTML 将这些字符分别返回为&amp;amp、&amp;lt 和&amp;gt。

因此你得到了完整的元素字符串。

解决方案

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

【讨论】:

    猜你喜欢
    • 2020-03-17
    • 2015-07-27
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2014-10-22
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多