Selenium 请教大佬们一个 xpath 的问题

树叶 · 2022年01月26日 · 最后由 回复于 2022年01月26日 · 3319 次阅读

在日常中我常常用 xpath 来定位元素,例如 //td[1] 来获取第一个 td 元素,一直都没啥问题
直到我遇到下面这种情况:

可以看到 //td 会显示 页面有 924 个 td,这个很容易理解

但是 //td[1] 却返回了 66 个 ,,这是为什么呢 ? 难道不应该是 返回第一个 td 么 ?
或者我对 中括号里面的数字的含义 一直以来就没理解对?

最佳回复

我想应该是这样的,td[1] 可能是 p 标签下的 td1,可能是 div 标签下的 td1,那这样系统就把所有标签下有 td1 的都拿出来了,因为你前面没有加其他的条件,比如//div[@id='title']/td[1]。

共收到 5 条回复 时间 点赞

我想应该是这样的,td[1] 可能是 p 标签下的 td1,可能是 div 标签下的 td1,那这样系统就把所有标签下有 td1 的都拿出来了,因为你前面没有加其他的条件,比如//div[@id='title']/td[1]。

Time 回复

你这个解释,感觉就很清晰了,这里的 td[1] 是指 相对某个元素之后的 ,排在第一个位置的 td,所以会显示多个,谢谢

(//td)[1] 表示全部 td 中的第 1 个

//td 是所有 td 元素
//td[1] 是所有元素下的第一个出现 td 的节点(可能这个元素下面有多个 td,只取第 1 个)
(//td)[1] 是所有 td 元素的第一个

ERIC 回复

你的第二条不对,看我图中 //td[1] 返回了 66 个,并不是只取第一个, 而是所有的 第一个节点

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册