Как найти, что в строке меню отображается x количество вкладок на странице

#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’]».