Общий эффект говоря экземпляр FluentWait
(который является то, что WebDriverWait
основан на) игнорировать исключения в том, что если произойдет такое исключение, когда он опрашивает DOM, он будет продолжать опрос, а не пусть исключение просачивается вверх.
В конкретном случае ExpectedConditions.visibilityOfElementLocated
нет никакой пользы явно игнорируя StaleElementReferenceException
потому ExpectedConditions.visibilityOfElementLocated
уже игнорирует. В нем есть explicit try... catch...
block, который заставит его вернуть null
, если элемент устарел. Я не знаю, не были ли у старых версий Selenium этот блок try... catch...
. Возможно, для некоторых более ранних версий Selenium было необходимо явно указать FluentWait
, чтобы игнорировать это исключение.
ожидает, пока элемент будет виден, чтобы он не был устаревшим.
Возможно, для ExpectedConditions.visibilityOfElementLocated
необходимо иметь дело с прочным элементом. Он выполняет свой тест в два этапа:
Получить WebElement
, соответствующий локатор передается пользователю.
Звоните .isDisplayed()
на этот элемент.
Между этих двух шагов, это возможно, для DOM, чтобы быть изменен таким образом, что элемент, приобретенный в первой стадии уже несвежий (== больше в документах нет) к тому времени, второй этап пробеги. Это очень маленькое окно риска, но оно существует и поэтому должно быть обработано.
В последнее время вы задаете много вопросов, которые можно было бы понять, если посмотреть на документацию. Пожалуйста, задайте свой вопрос и потратите некоторое время на чтение, прежде чем задавать такие основные вопросы. – JeffC