ElementCollection не успевает заполнится

Всем добрый день ) Недавно начал осваивать Selenide и столкнулся вот с такой проблемой )

В классе заполняется коллекция элементов ,

ElementsCollection priceCollection = $$x("//span[contains(@class,‘price__main-value’)]");

затем в методе возвращаю список

    for (SelenideElement element:priceCollection) {
        list.add(Long.parseLong(element.getText().replaceAll("\\D+","")));
    }

    return list;
}

Проблема заключается в том , что при работе с этим списком в тестах он возвращает size 0 (т.к коллекция не успевает заполнится элементами во время выполнения теста) , при дебаге отрабатывает корректно , как с этим работать ? Использовать таймауты ? Или есть более разумные методы ) Спасибо )

Самый простой ответ - сначала надо дождаться загрузки. Т.е. ДО цикла добавить строку типа priceCollection.shouldHave(size(42)).

Но более важный вопрос - зачем вам вообще этот list? Что мы потом с ним собираетесь делать?
Скорее всего вместо собирания этого списка вам лучше сразу написать нужную проверку:

priceCollection.shouldHave(BLA_BLA_BLA);

В этом BLA_BLA_BLA может быть любая нужная вам проверка - либо готовая селенидовская, либо своя самодельная (легко делается в одноу строку).

Спасибо за ответ ) Задумка была в том , чтобы написать в классе метод . который возвращает лист со значениями для использования уже непосредственно в тестах для проверки различных сортировок.

Да, для этого лучше создать свои проверки. Наследуйся от класса CollectionCondition.

Примерно так: Custom conditions · selenide/selenide Wiki · GitHub

Большое спасибо ) А нету наглядного примера наследования непосредственно от CollectionCondition ?

RTFT