Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Почему ElementCollection.size возвращает 0?

page-object
java
selenide
selenium
webdriver
Теги: #<Tag:0x00007fedb863c678> #<Tag:0x00007fedb863c538> #<Tag:0x00007fedb863c380> #<Tag:0x00007fedb863c240> #<Tag:0x00007fedb863d758>

(Демид) #1
public void click(String name) {

        ElementsCollection elements = $$(withText(name));

        вот тут программа просто выходит из метода, по какой причине?

        for (SelenideElement e : elements) {

            if (e.isDisplayed() && e.is(Condition.enabled)) {

                e.click();

            }
        }
    }

(Vasiliy Rakshin) #2

Вы определитесь с вопросами сначала.
Ответ на первый вопрос - потому что коллекция оказалась пустой.
Ответ на второй вопрос - либо коллекция пустая, либо все элементы оказываются скрытыми или не включенными.


(Демид) #3
  1. Коллекция быть пустой не может, на странице минимум 5 элементов соответствующих запросу
  2. Как минимум один из элементов имеет displayed:true и отсутствие дизейбла

Главный вопрос описан в топике: как и почему элементc коллекшн не находит элементы на странице

Пример элемента страницы в момент запуска метода image


(Vasiliy Rakshin) #4

Ну, предположим, раз вы задаёте такой вопрос, то проблема в локаторе элементов.


#5

Если коллекция пустая значит не верный локатор, сначала проверьте через Chrome Dev Tools правильный ли локатор.


(Демид) #6

Локатор пишется текстом
Сам метод выглядит так

catalog.click("Заказать")

#7

Попробуй напистаь полный локатор к этой кнопке. Если пройдёт значит проблема с локатором.


(Демид) #8

Да, проблема с локатором, буду думать как обойти, спасибо