Я использую как wait(until.elementLocated(element, timeout))
, так и wait(until.elementVisible(element, timeout))
. «Подождать, пока не станет видимым» не удается в тех местах, где «подождать, пока не будет обнаружено». Почему?
В чем разница между ожиданием появления видимого и ожиданием обнаружения в Selenium
Ответы (3)
Поскольку ваш вопрос заключается в разнице между wait(until.elementLocated(element, timeout))
и wait(until.elementVisible(element, timeout))
, и вы не пометили привязку Selenium, я объясню это с точки зрения Java.
until.elementLocated()
эквивалентноpresenceOfElementLocated()
в Java. Он проверяет, что элемент присутствует в HTML DOM страницы. Это не обязательно означает, что элемент видим. Так что нет никакой гарантии, что это взаимодействует.until.elementVisible()
эквивалентноvisibilityOfElementLocated()
в Java. Он проверяет, что элемент присутствует в HTML DOM страницы и видим. Видимость означает, что элемент не только отображается, но также имеет высоту и ширину больше 0. Опять же, это не обязательно означает, что элемент является интерактивным, то есть кликабельным.
Для получения дополнительной информации о ExpectedConditions
в Java см. документы.
Подождите, пока visible не сделает именно это. Он ждет, пока элемент не станет видимым. Элемент может находиться в DOM, но быть скрытым. В этом случае его можно было бы обнаружить, но не увидеть.
Для получения элемента используются как until.elementLocated(element, timeout), так и until.elementVisible(element, timeout).
Но я предполагаю, что elementLocation будет быстрее, потому что он просто проверяет наличие элемента в DOM страницы и не обязательно означает, что элемент виден. в то время как elementVisible должен проверить, что элемент присутствует в DOM страницы и виден. Видимость означает, что элемент не только отображается, но также имеет высоту и ширину.
Надеюсь, это объяснит разницу.