WebDriver无法找到 - 是[对象XrayWrapper [对象文本]

ado*_*dom 2 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:
Run Code Online (Sandbox Code Playgroud)

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

这是一个例子的html.我试图用/ text()验证文本'(会话的额外问题)'.

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

</div>
Run Code Online (Sandbox Code Playgroud)

til*_*ois 5

好吧,问题是这个XPath表达式不会找到你的元素,而是你选择了一些文本.

也就是说,错误消息还告诉您: The given selector [...] does not result in a WebElement.

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

但是,WebDriver假设您的表达式导致它可以表示为一个DOM元素WebElement.此表达式不会因此抛出表达式.

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