html - 如何从 XPath 中的按钮元素中选择第一个 id?

标签 html google-chrome xpath xhtml

我正在尝试返回网页的 XPath 查询的第一个元素,但不确定为什么这在 Google Chrome 中不起作用。我尝试了各种变体,但这没有成功。

基本示例在我的例子中返回:

INPUT: //button[@data-qtip='Next Page']/@id
OUTPUT: [id=​"button-1135-btnEl",id=​"button-1101-btnEl"]

所以我的猜测是,选择第一项可以按以下方式完成,但对我来说没有用。

INPUT: //button[@data-qtip='Next Page' and position() = 1]/@id
OUTPUT: [id=​"button-1135-btnEl",id=​"button-1101-btnEl"]
INPUT: //button[@data-qtip='Next Page']/@id[1]
OUTPUT: [id=​"button-1135-btnEl",id=​"button-1101-btnEl"]

最佳答案

//button[@data-qtip='Next Page']/@id[1]

这是 XPath 中最常见的 FAQ 之一

上述表达式通常不会按预期选择(仅)一个节点。

原因是什么?

W3C XPath Specification // 缩写的定义方式使得此伪运算符的优先级低于 XPath [] 运算符。

因此,任何表达式如:

//SomeNode[1]

选择所有 SomeNode 节点,每个节点都是其父节点的第一个 SomeNode 子节点。一般情况下,这样的节点可能不止一个。

当我们想要选择文档中的第一个SomeNode节点时,我们必须使用方括号覆盖默认的运算符优先级:

(//SomeNode)[1]

在这种特殊情况下使用:

(//button[@data-qtip='Next Page']/@id)[1]

关于html - 如何从 XPath 中的按钮元素中选择第一个 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8325844/

相关文章:

jquery - 使用 JQuery 展开折叠 div

Javascript 排序在 Firefox 中有效,在 Chrome 中无效

javascript - Google Chrome 中对象没有方法 'focus'

xml - 检测参数类型 xslt

php - 如何在不使用按钮上的提交事件的情况下提交表单。

javascript - 如何在 div 上的鼠标周围插入 href - wordpress 不断删除 ahref

javascript - iframe 在父窗口外加载

即使鼠标静止不动,也会调用 jQuery mousemove()

java - 另一个 Xpath 困境

Python/Selenium - 通过 xpath 查找元素 - 元素存在,但未找到