java - Xpath contains text() 不适用于注释

标签 java html selenium xpath

有人可以解释一下为什么我找不到包含文本的 h2 吗? 我正在寻找的 html 片段

<h2 class="heading">
    <!---->
    "Some text"
    <!---->
</h2>

已经尝试使用

//*[contains(text(),'Some text')]

但它没有找到它。

编辑: 看起来问题是由于影子根元素造成的。 使用你的方法仍然没有帮助我找到该元素。但现在至少我知道我可以在不同的地方使用你的方法

最佳答案

您的问题说明了一个一般规则:您很少需要使用 text() 表达式。几乎所有时候,使用 string() 来获取元素的字符串值会更好;大多数时候你甚至不需要调用string(),因为当需要字符串时,你可以提供一个节点,它的字符串值将自动被提取。

所以你可以写

//*[contains(string(),'Some text')]

或者更简单

//*[contains(.,'Some text')]

元素的字符串值(使用string()函数获得)是其所有后代文本节点的串联。

这确实有一个缺点,如果 h2 元素包含“Some text”,那么 h2 元素的所有祖先也包含“Some text”。因此,您可能希望对搜索的元素更有选择性。

关于java - Xpath contains text() 不适用于注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65899493/

相关文章:

selenium webdriver 选择元素

java - 以正确的形式在 JSON 文件中写入数据 JAVA

Java GridPane 中间部分问题

java - JButton 干扰 JPanel 上的鼠标监听器

javascript - 带有散列标签的 RegEx 问题

java - 如何决定何时在 selenium webdriver 中使用 try catch block

java - IntelliJ IDEA 13 Scala Plugin & Eclipse Kepler 编译报错

css - 如何在嵌入 html 的 youtube 视频中隐藏播放/暂停按钮和进度条?

php - Bootstrap 3 帮助 block 布局问题

java - 如何在 Cucumber 测试套件中订购功能文件?