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

154
23 февраля 2018, 18:04

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

Есть список 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();
}
Answer 1

Попробуйте так

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

Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла

UPD в условии указано "<= 0" т.к. поля с отрицательной шириной тоже не кликабельные

Answer 2

Пробежаться по всем элементам, отфильтровав с учётом нулевой длины, можно так:

elements.stream()
    .filter(e -> e.getSize().getWidth() > 0)
    .forEach(WebElement::click);
READ ALSO
Определение SerialPort устройства по Vid&amp;Pid

Определение SerialPort устройства по Vid&Pid

Пишу программу для работы с com-портами на LinuxНадо подключиться к устройству через serial port, знаю его vid и pid

182
Почему join не останавливает 2 поток?

Почему join не останавливает 2 поток?

Добрый деньне совсем понел работу метода join(); у класса Thread Есть 2 потока у первого вызывается метод join но второй отказывается ждать его

195
Переход на активность при нажатии на пункт RecyclerView

Переход на активность при нажатии на пункт RecyclerView

Есть RecyclerView который выводит несколько пунктовУ каждого пункта своя разметка

157
Настройка распознавания лиц в OpenCV

Настройка распознавания лиц в OpenCV

У меня есть набор изображений для обучения: для двух персон по 10 изображений и 80 изображений различных персон для проверки достоверности...

195