如何在XPath中使用索引

时间:2018-02-12 10:44:12

标签: selenium xpath webdriver selenium-chromedriver

我确实有弹出窗口有三个下拉列表,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知识..

谢谢!

1 个答案:

答案 0 :(得分:2)

仅当两个链接都是同一父节点的子节点时,

//*[@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]

第二次