Как использовать метод findElements с неявным ожиданием?

#selenium #selenium-webdriver #findelement

#selenium #selenium-webdriver #findelement

Вопрос:

В документе метода написано:

При неявном ожидании этот метод вернется, как только в найденной коллекции будет больше 0 элементов, или вернет пустой список, если время ожидания будет достигнуто

Как я вижу (пожалуйста, исправьте меня, если я ошибаюсь), когда метод находит один элемент, он возвращает его без поиска в других. Итак, в чем преимущество использования этого метода при использовании метода findElement?

Ответ №1:

findElements метод возвращает список веб-элементов, соответствующих переданному локатору, в то время findElement как метод всегда возвращает один веб-элемент.
Также во многих случаях вы применяете findElement findElements методы and на уже полностью загруженной странице. В этом случае findElements вам будет возвращен список всех веб-элементов, соответствующих переданному локатору.
Однако, чтобы получить все соответствующие элементы на странице загрузки, вы не можете эффективно использовать findElements неявное ожидание.
Вместо этого следует использовать ожидаемые условия, реализующие явное ожидание.
Если вы знаете точное количество элементов, соответствующих переданному локатору, представленному на этой странице, вы можете использовать этот метод:

 wait.until(ExpectedConditions.numberOfElementsToBe(element, expectedElementsAmount))
 

И если вы знаете, что должно быть хотя бы некоторое известное количество элементов, вы можете использовать этот метод:

 wait.until(ExpectedConditions.numberOfElementsToBeMoreThan(element, expectedElementsAmount))
 

Ответ №2:

Скорее индивидуально, вам нужно прочитать строку во всем ее контексте.

  • findElements(): найти все элементы на текущей странице, используя данный механизм. На этот метод влияет время «неявного ожидания», действующее во время выполнения. При неявном ожидании этот метод вернется, как только в найденной коллекции будет больше 0 элементов, или вернет пустой список, если время ожидания будет достигнуто.

Здесь более 0 элементов означает больше 0, т.Е. n > 0 Но Обязательно найдите все элементы на текущей странице до истечения времени ожидания.

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

1. Это определенно неправильный ответ! Как только будет обнаружен хотя бы один элемент, соответствующий переданному локатору findElements , метод вернет пойманные совпадающие элементы и НЕ будет ждать до определенного времени ожидания!

2. @DebanjabB, извините, но я не могу понять ваш ответ. Можете ли вы объяснить предложение здесь: более 0 элементов означает больше 0, т.Е. n> 0, но обязательно найдите все элементы на текущей странице до истечения времени ожидания. другим способом?