【问题标题】:How to use indexes in XPath如何在 XPath 中使用索引
【发布时间】:2018-02-14 17:46:54
【问题描述】:

我确实有弹出窗口,其中三个下拉列表,ID 是唯一的 每一代弹出窗口:

第一个元素:

<a aria-required="true" class="select" aria-disabled="false" aria-
describedby="5715:0-label" aria-haspopup="true" tabindex="0" role="button" 
title="" href="javascript:void(0);" data-aura-rendered-by="5733:0" data-
interactive-lib-uid="10">Stage 1 - Needs Assessment</a>

虽然我可以通过简单的xpath="//*[@class='select'][1]" 识别上面的元素,但其他两个在我看来相同(下面的示例)无法通过像//*[@class='select'][2] 这样的索引来识别,尝试“跟随”而不成功,但我的语法可能不正确。

我无法找到的下拉元素示例..

<a aria-required="false" class="select" aria-disabled="false" aria-
describedby="6280:0-label" aria-haspopup="true" tabindex="0" role="button" 
title="" href="javascript:void(0);" data-aura-rendered-by="6290:0" data-
interactive-lib-uid="16">--None--</a>

任何想法我缺少什么?,除了高级 xpath 知识..

谢谢!

【问题讨论】:

  • 刚刚发现我在不同的部分中有这些元素,'class="slds-grid mdp forcePageBlockSectionRow"',并且第一个下拉元素被识别(可能)因为我在第一个弹出部分中,我应该使用什么语法让 xpath 在第二部分中找到下拉菜单?

标签: selenium xpath webdriver selenium-chromedriver


【解决方案1】:

//*[@class='select'][2] 仅当两个链接都是同一父级的子级时才会返回您所需的节点,例如

<div>
    <a class="select">Stage 1 - Needs Assessment</a>
    <a class="select">--None--</a>
</div>

如果链接是不同父母的孩子,例如

<div>
    <a class="select">Stage 1 - Needs Assessment</a>
</div>
<div>
    <a class="select">--None--</a>
</div>

你应该使用

(//*[@class='select'])[1]

第一个

(//*[@class='select'])[2]

第二次

【讨论】:

  • 非常感谢@Andersson,我准备好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
  • 2012-04-30
  • 2019-02-09
  • 1970-01-01
相关资源
最近更新 更多