在日常中我常常用 xpath 来定位元素,例如 //td[1] 来获取第一个 td 元素,一直都没啥问题 直到我遇到下面这种情况:
可以看到 //td 会显示 页面有 924 个 td,这个很容易理解
但是 //td[1] 却返回了 66 个 ,,这是为什么呢 ? 难道不应该是 返回第一个 td 么 ? 或者我对 中括号里面的数字的含义 一直以来就没理解对?
我想应该是这样的,td[1] 可能是 p 标签下的 td1,可能是 div 标签下的 td1,那这样系统就把所有标签下有 td1 的都拿出来了,因为你前面没有加其他的条件,比如//div[@id='title']/td[1]。
你这个解释,感觉就很清晰了,这里的 td[1] 是指 相对某个元素之后的 ,排在第一个位置的 td,所以会显示多个,谢谢
(//td)[1] 表示全部 td 中的第 1 个
//td 是所有 td 元素 //td[1] 是所有元素下的第一个出现 td 的节点(可能这个元素下面有多个 td,只取第 1 个) (//td)[1] 是所有 td 元素的第一个
你的第二条不对,看我图中 //td[1] 返回了 66 个,并不是只取第一个, 而是所有的 第一个节点