Есть и другие подобные функции, но эти три, в основном, используют ..
Wait Until Element Is Enabled
предполагает, что элемент существует на странице, и будет ждать, пока элемент не будет включен (не только для чтения и не отключен),Если элемент не существует, он немедленно завершится ошибкой (или по истечении времени ожидания, если у вас есть неявное ожидание)
Wait Until Element is Visible
предполагает, что элемент существует на странице, и будет ждать, пока элемент будет видимым.Если элемент не существует, он немедленно завершится ошибкой (или по истечении времени ожидания, если у вас есть неявное ожидание)
Wait Until Page Contains Element
не делает никаких предположений об элементе.Он ожидает, пока элемент фактически не появится на странице, независимо от того, является ли он видимым, невидимым, включенным или отключенным.Это не требует неявного ожидания, так как это ключевое слово является явным ожиданием.
Наиболее полное решение - это дождаться, пока оно появится на странице, дождаться, пока оно не станет видимым, а затем дождаться его появления.быть включенным.
Если элемент всегда будет на странице, вы можете пропустить первую проверку (то есть: если нет javascript
, который может создать или удалить элемент).
Еслиэлемент всегда будет включен, вам не нужно ждать, пока он станет активным (то есть: если нет javascript
для отключения или включения элемента)
Для простых статических страниц вам действительно нужно толькопроверить, что элемент виден.Даже в этом обычно нет необходимости, поскольку селен не возвращается после открытия страницы, пока страница не будет загружена.Проблема возникает, когда страница динамическая.То есть, когда есть javascript
, который может изменить то, что находится на странице, и является ли он видимым или включенным, после загрузки HTML.
Нет, потому что «загружен» может означать разные вещи в разныхПриложения.Браузер установит переменную document.readyState
в "complete
", когда закончит загрузку HTML.Вы можете проверить это в роботе с помощью функции Ожидание условия return window.document.readyState === 'complete'
.Опять же, если у вас есть javascript
, который запускается на странице, этого может быть недостаточно, поскольку страница может измениться после загрузки начального HTML
.