我正在尝试返回我的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"]
答案 0 :(得分:5)
//button[@data-qtip='Next Page']/@id[1]
这是XPath中最常见的常见问题解答之一。
上述表达式一般不会按预期选择(仅)一个节点。
原因?
在 W3C XPath Specification 中,//
缩写的定义方式是此伪运算符的优先级低于XPath []
运算符。< / p>
因此,任何表达式如:
//SomeNode[1]
选择所有SomeNode
个节点,每个节点都是其父节点的第一个SomeNode
子节点。在一般情况下,可能存在多个这样的节点。
当我们想要选择文档中的第一个SomeNode
节点时,我们必须使用括号覆盖默认的运算符优先级:
(//SomeNode)[1]
在此特定情况下使用:
(//button[@data-qtip='Next Page']/@id)[1]
答案 1 :(得分:1)
尝试使用next xpath命令:
INPUT: (//button[@data-qtip='Next Page']/@id)[1]