#java #selenium-webdriver
#java #selenium-webdriver
Вопрос:
Я использую сайт https://www.shoppersstop.com/
для использования веб-драйвера Selenium с использованием Java.
Я хотел найти, что в строке меню есть x количество вкладок или все вкладки, видимые на странице. Я могу написать метод для каждой вкладки, которая отображается на странице, но я не могу написать ни одного метода, который находит все элементы, видимые в меню.
Ответ №1:
Selenium поддерживает поиск элементов с помощью xpath. Чтобы упростить задачу, я бы посоветовал получить все элементы, соответствующие нужному вам xpath, а затем отфильтровать только те, которые необходимы.
При использовании Java 8 это должно сработать:
driver.findElements(By.xpath("//ul[@class='lvl1']/li"))
.filter(element -> element.isDisplayed())
.collect(Collectors.toList());
Объяснение XPath: Сначала найдите мне все элементы ‘ul’, которые имеют класс ‘lvl1’; затем получите все элементы ‘li’, которые находятся непосредственно внутри этих элементов ‘ul’.
Конечно, есть и другие способы, которые вы можете использовать, особенно если вы являетесь владельцем веб-сайта. Например, если вы знали, что любой видимый элемент будет иметь класс ‘show-item’, тогда вы можете составить свой XPath следующим образом: «//ul[@class=’lvl1′]/li[@class=’show-item’]».