我通过点击 YouTube 视频趋势部分来练习 XPath。在趋势部分,我想单击第二个视频,无论存在哪个视频。我在下面编写了 XPath 来定位第二个视频。下面是使用
text()
方法的 XPath。
//*[contains(text(),"1 day ago")]
现在上述 XPath 的目标是包含以下文本的所有 22 个元素,即 1 天前。我的目标是瞄准第二个视频。为此,我通过以下方式修改了我的 XPath
//*[contains(text(),"1 day ago")][2]
现在,当我写这篇文章时,它根本不选择任何元素。下面是图
但是如果我写
//*[contains(text(),"1 day ago")][1]
它的目标是包含以下文本的所有 22 个元素。下面是图
我有两个问题:
我应该如何修改我的 XPath 以便它仅选择第二个元素以及为什么我当前的 XPath(即
//*[contains(text(),"1 day ago")][2]
)在以下场景中不起作用?
编写以下 XPath 时
//*[contains(text(),"1 day ago")][1]
为什么它针对网页上的所有 22 个元素?
谢谢。
我无法解释原因,但我可以告诉你,在这种情况下,解决方法是将定位器括在括号中,然后使用索引,例如
(//*[contains(text(),'1 day ago')])[2]
这将按照您的预期工作并得到您想要的东西。