Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Пропуск элемента и переход к следующему элементу в цикле For

#java #selenium_webdriver


Здравствуйте.

Есть список List с динамическими элементами которые меняют свою ширину
каждые два дня. Их количество так же меняется, поэтому прогнал через цикл for, чтобы
кликнуть на все по-очереди.

Все работало до тех пор, пока два элемента не приняли ширину значения 0. Selenium
Webdriver выдал ошибку:


  Element is not clickable at point…


Теперь мне нужно сделать так, чтобы при встрече с таким элементом, Selenium пропускал
этот элемент (на который он не может кликнуть) в цикле и переходил к следующему элементу,
на который можно кликнуть (в данном случае это следущий элемент имеющий ширину больше 0).

Ниже привел код Java, с которым я пыталася работать, но пропустить некликаемый элемент
и перейти к другому элементу не получается. Помогите советом.

Спасибо! 

for (i = 0; i < elements.size(); i ++) {
    elements.get(i).getSize().getWidth();
    if (elements.get(i).getSize().getWidth() == 0) {
        elements.get(i.next()).click();
    }
    elements.get(i).click();
}

    


Ответы

Ответ 1



Попробуйте так for (i = 0; i < elements.size(); i++) { if (elements.get(i).getSize().getWidth() <= 0) { continue; } elements.get(i).click(); } Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла UPD в условии указано "<= 0" т.к. поля с отрицательной шириной тоже не кликабельные

Ответ 2



Пробежаться по всем элементам, отфильтровав с учётом нулевой длины, можно так: elements.stream() .filter(e -> e.getSize().getWidth() > 0) .forEach(WebElement::click);

Комментариев нет:

Отправить комментарий