Нажатие на элемент с тем же именем класса, что и у других - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь найти и щелкнуть элемент, имеющий то же имя className, что и другие элементы. Я не могу отличить этот элемент от другого, чтобы щелкнуть этот элемент. Вот HTML-код этого элемента:

<a href="/category/men/N-fh7rea" class="accord-header">
  Men
</a>

В этом коде имя класса такое же, как и у других элементов, и текст "Men" также одинаков. Так сделал Xpath из этого:

//a[@class='accord-header' AND contains(text(),'Men') ]

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

если вы не можете найти никакой разницы, вы всегда можете сосчитать одно, из тех же объектов, которые вас интересуют. Если это, например, третий элемент, сохраните их все в виде списка, используя findElements, а затем получите из него третий элемент.

List<WebElement> elems = driver.findElements(By.xpath("//a[@class='accord-header' and @href='/category/men/N-fh7rea' and contains(.,'Men')]"));
WebElement elementThatYouLookedFor = elems.get(2);

Если вам нужно щелкнуть по всем элементам этого вида, просто используйте цикл foreach:

List<WebElement> elems = driver.findElements(By.xpath("//a[@class='accord-header' and @href='/category/men/N-fh7rea' and contains(.,'Men')]"));
for(WebElement we : elems){
we.click(); //or any other operation
}
0 голосов
/ 09 мая 2018

Немного подкорректируйте xpath и используйте:

//a[@class='accord-header' and @href='/category/men/N-fh7rea']

Вы можете получить более гранулированный и использовать:

//a[@class='accord-header' and @href='/category/men/N-fh7rea' and contains(.,'Men')]

Вы можете также использовать:

//a[@class='accord-header' and @href='/category/men/N-fh7rea'][normalize-space()='Men']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...