如何从XPath中的button元素中选择第一个id?

时间:2011-11-30 12:19:08

标签: 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"]

2 个答案:

答案 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]