为了账号安全,请及时绑定邮箱和手机立即绑定

用于获取元素的第n个实例的XPath查询

用于获取元素的第n个实例的XPath查询

蝴蝶刀刀 2019-08-27 13:23:06
用于获取元素的第n个实例的XPath查询有一个HTML文件(我不控制其内容)有几个input元素都具有相同的固定id属性"search_query"。文件的内容可以更改,但我知道我总是希望获得input带有id属性的第二个元素"search_query"。我需要一个XPath表达式来执行此操作。我尝试//input[@id="search_query"][2]但是这不起作用。以下是此查询失败的示例XML字符串:<div>   <form>     <input id="search_query" />    </form></div><div>   <form>     <input id="search_query" />   </form></div><div>   <form>     <input id="search_query" />   </form></div>请记住,上面只是一个示例,其他HTML代码可能完全不同,input元素可以出现在任何地方,没有一致的文档结构(除了我保证总会有至少两个inputid属性为"search_query")。什么是正确的XPath表达式?
查看完整描述

3 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

这是一个FAQ

//somexpression[$N]

表示“查找由其选择的每个节点//somexpression$N其父节点的子节点”。

你想要的是

(//input[@id="search_query"])[2]

请记住[]运算符的优先级(优先级)高于//缩写。


查看完整回答
反对 回复 2019-08-27
?
暮色呼如

TA贡献1853条经验 获得超9个赞

小点:你永远不应该有一个具有给定ID的元素(因此问题中的HTML实际上是无效的)。在实践中,浏览器无论如何都会让你这样做,但如果你这样做,你会错过使用ID的唯一好处,那就是它们表示“我是独特的”(而类被设计用于非独特的能指)。

查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 1477 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信