Здравствуйте.
Есть список List<WebElement> с динамическими элементами которые меняют свою ширину каждые два дня. Их количество так же меняется, поэтому прогнал через цикл 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();
}
Попробуйте так
for (i = 0; i < elements.size(); i++) {
if (elements.get(i).getSize().getWidth() <= 0) {
continue;
}
elements.get(i).click();
}
Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла
UPD в условии указано "<= 0" т.к. поля с отрицательной шириной тоже не кликабельные
Пробежаться по всем элементам, отфильтровав с учётом нулевой длины, можно так:
elements.stream()
.filter(e -> e.getSize().getWidth() > 0)
.forEach(WebElement::click);
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости