Xpath 表达式清晰度 - Java Selenium

问题描述 投票:0回答:1

我通过点击 YouTube 视频趋势部分来练习 XPath。在趋势部分,我想单击第二个视频,无论存在哪个视频。我在下面编写了 XPath 来定位第二个视频。下面是使用

text()
方法的 XPath。

//*[contains(text(),"1 day ago")]

现在上述 XPath 的目标是包含以下文本的所有 22 个元素,即 1 天前。我的目标是瞄准第二个视频。为此,我通过以下方式修改了我的 XPath

//*[contains(text(),"1 day ago")][2]

现在,当我写这篇文章时,它根本不选择任何元素。下面是图

图像1(查看我用红色标记的矩形)

但是如果我写

//*[contains(text(),"1 day ago")][1]

它的目标是包含以下文本的所有 22 个元素。下面是图

图2(查看我用红色标记的矩形)

我有两个问题:

  1. 我应该如何修改我的 XPath 以便它仅选择第二个元素以及为什么我当前的 XPath(即

    //*[contains(text(),"1 day ago")][2]
    )在以下场景中不起作用?

  2. 编写以下 XPath 时

    //*[contains(text(),"1 day ago")][1]
    为什么它针对网页上的所有 22 个元素?

谢谢。

java selenium-webdriver xpath
1个回答
0
投票

我无法解释原因,但我可以告诉你,在这种情况下,解决方法是将定位器括在括号中,然后使用索引,例如

(//*[contains(text(),'1 day ago')])[2]

这将按照您的预期工作并得到您想要的东西。

© www.soinside.com 2019 - 2024. All rights reserved.