#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);
Комментариев нет:
Отправить комментарий