Как использовать индексы в XPath

У меня есть всплывающее окно, в котором есть три раскрывающихся списка, идентификаторы уникальны для каждого поколения всплывающих окон:

Первый элемент:

<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.

Благодарю вас!


person Jan Vasina    schedule 12.02.2018    source источник
comment
Только что узнал, что у меня есть эти элементы внутри разных разделов, 'class = slds-grid mdp forcePageBlockSectionRow', и идентифицирован первый раскрывающийся элемент (вероятно], поскольку я нахожусь внутри первого всплывающего раздела, какой синтаксис я должен использовать, чтобы получить xpath для поиска раскрывающийся список внутри второго раздела?   -  person Jan Vasina    schedule 12.02.2018


Ответы (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]

за секунду

person Andersson    schedule 12.02.2018
comment
Большое спасибо @Andersson, я готов. - person Jan Vasina; 12.02.2018