【问题标题】:How to exclude text from `<script>` tag within the HTML DOM when calling `element.getText()`调用`element.getText()`时如何从HTML DOM中的`<script>`标签中排除文本
【发布时间】:2018-09-07 09:25:59
【问题描述】:

我在 Java 上使用 selenium 来测试 HTML 页面。这是一个 HTML 示例:

<a>
  Return to homepage
  <script>
    <form>...</form>
  </script>
</a>

我需要获取 &lt;a&gt; 元素的文本以检查它是否正确。

当我为这个&lt;a&gt; 元素调用element.getText() 时,Chrome、Firefox、IE 和 Edge 会返回正确的文本 (Return to homepage),但 Safari 也会返回位于 &lt;script&gt; 标记内的文本(即不是文本,而是 HTML 代码)

当我为我的&lt;a&gt; 元素调用element.getText() 时,有没有办法可以排除&lt;script&gt; 的内容?

这只发生在 Safari(最新的浏览器和驱动程序版本)中

【问题讨论】:

  • &lt;script&gt; 标记中不应包含 HTML 元素。那就是疯狂。将&lt;form&gt; 移出&lt;script&gt; 标记。
  • @BobDalgleish,我无权访问应用程序,也无法更改它的代码,所以这不是我的解决方案。也许您知道排除&lt;script&gt; 内容的方法,或者只获取selenium 中html 元素的顶级文本的方法?

标签: java selenium dom selenium-webdriver webdriver


【解决方案1】:

由于您已经将WebElement标识为元素,接下来您可以借助executeScript()方法提取文本返回首页如下:

String myText = ((JavascriptExecutor)driver).executeScript("return arguments[0].firstChild.textContent;", element);

【讨论】:

  • 感谢您的帮助,此脚本帮助我获得了正确的文本。
猜你喜欢
  • 2018-11-30
  • 1970-01-01
  • 2015-12-26
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 1970-01-01
  • 2012-01-10
相关资源
最近更新 更多