java - WebDriver 找不到 - 是 [object XrayWrapper [object Text]

标签 java selenium xpath selenium-webdriver

我尝试使用以下路径通过 xpath 定位元素,但收到以下错误。 xpath 有可能找到这个元素吗?还是驱动本身的问题?

我希望能够区分/p[4]/text()[1] 和/p[4]/text()[2] 中的值

.//*[@id='content']/p[4]/text()[1]

org.openqa.selenium.InvalidSelectorException: The given selector .//*[@id='content']/p[4]/text()[1] is either invalid or does not result in a WebElement. The following error occurred:

InvalidSelectorError:xpath 表达式“.//*[@id='content']/p[4]/text()[1]”的结果是:[object XrayWrapper [object Text]]。它应该是一个元素。

这是示例的 html。我正在尝试使用/text() 验证文本“( session 的额外问题)”。

<div class="ad_field">
<label for="survey_id">Survey</label>
(extra questions for session)
<br>

</div>

最佳答案

嗯,问题是这个 XPath 表达式不会为您找到一个元素,而是您选择了一些文本。

也就是说,错误消息还告诉您: 给定的选择器 [...] 不会生成 WebElement。

您要求 .//*[@id='content']/p[4]/text()[1] 以函数 /text( ) 它选择的不是一个节点,而是它的文本。我不太确定 /text()[1] 做了什么,但假设它会选择该文本中的第二个字符。至少我认为可以安全地假设它不会神奇地将文本转换为 DOM 元素。

但是,WebDriver 假定您的表达式生成一个 DOM 元素,它可以表示为 WebElement。这个表达式没有,因此它抛出表达式。

作为提示,您应该打开网页并在有疑问时使用工具手动检查您的 XPath。为此,我将 Firebug 与 FirePath AddOn 结合使用,但您可以随意使用您认为有用的任何内容。

关于java - WebDriver 找不到 - 是 [object XrayWrapper [object Text],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21651033/

相关文章:

java - 将属性文件添加到 Maven 构建过程

java - 无法恢复存储在 MySQL 数据库中的 URL

Java,类之间传递值

java - 多表 td 元素的 Xpath

c# - Selenium:如何拦截请求

java - 自定义滚动条箭头

java - 我如何使用 isElementPresent(By by) 方法来验证我的测试脚本是否正常工作?

xml - number() 有时包含一个逗号和一个小数。我怎样才能检查它是否是一个数字

c# - XmlNode.SelectNodes 返回 0 个节点

xml - 使用 Crystal 从 XML::Nodeset 中的第一个节点检索值