2

我正在使用以下代码访问链接(对于 phpunit/selenium):

//td[normalize-space() ='Test title 2']/following-sibling::td[3]/a[.='delete']

在 FireFox 中使用 XPath 检查器返回 7 个元素(因为有 7 个链接匹配“测试标题 2”),但是当我[1]在最后添加时:

//td[normalize-space() ='Test title 2']/following-sibling::td[3]/a[.='delete'][1]

它仍然返回 7 个链接。我在这里做错了什么?

4

2 回答 2

6

在表达式末尾添加[1]时,选择a每个子节点的第一个子节点...td[3](即 7 个a​​子节点)。您可以将查询更改为:

xpath=(//td[normalize-space() ='Test title 2']/following-sibling::td[3]/a[.='delete'])[1]

或者如果您使用 webdriver(不需要 xpath 前缀):

(//td[normalize-space() ='Test title 2']/following-sibling::td[3]/a[.='delete'])[1]

这将从元素a的整个a子集中选择第一个。...td[3]

有关更多教程,请参阅XPath 示例

于 2012-04-30T16:03:41.550 回答
0

正如规范所说:

位置路径与位置路径//para[1]的含义不同/descendant::para[1]。后者选择第一个后代 para元素;前者选择作为其父母para的第一个孩子的所有后代元素。para

所以,

//td[normalize-space() ='Test title 2']/following-sibling::td[3]/descendant::a[.='delete'][1]

会在你的情况下做得更好。

于 2012-05-01T11:33:13.887 回答