我使用了此Xpath表达式"//span[@class='Big']"
,并获得了该页面中<span>
标记和class='Big'
下的所有元素。
我的问题是如果我只希望页面上第一次出现,而不是所有出现,那么正确的Xpath
表达式是什么?
谢谢, 纳林
答案 0 :(得分:108)
正确答案(注意括号):
(//span[@class='Big'])[1]
以下表达式在一般情况下是错误的:
//span[@class='Big'][1]
因为它选择文档中的每个span
元素,满足第一个谓词中的条件,并且是其父元素的第一个这样的子元素 - 可能有很多这样的元素XML文档中的元素将被选中。
有关详细说明,请参阅:https://stackoverflow.com/a/5818966/36305
答案 1 :(得分:4)
如果您希望class
属性 等于 (//span[@class="Big"])[1]
,那么Dimitre Novatchev的回答是正确的(没有任何其他附加到元素的类):
document.querySelectorAll('span[class="Big"]')[0]
...类似于以下JavaScript表达式:
Big
另一方面,如果您希望(//span[contains(concat(" ", normalize-space(@class), " "), " Big ")])[1]
class
属性中任意数量的 类之一(而不是唯一的类),您可以使用以下表达式:
document.querySelectorAll('span.Big')[0]
...类似于以下JavaScript表达式:
{{1}}