- Селен: Как селен определяет видимые элементы или нет? Возможно ли, что он загружается в DOM, но не отображается в пользовательском интерфейсе? Я хотел бы проверить сценарий, в котором элемент можно щелкнуть, я знаю, что на веб-диске есть метод ElementToBeClickable, однако я хотел бы знать внутреннюю работу. Пожалуйста помоги мне с этим.
- Кроме того, как справиться со сценарием, когда элемент загружен в DOM, но пользовательский интерфейс показывает, что загрузка идет, как дождаться полной загрузки?
- Пожалуйста, дайте мне знать, если пользовательский интерфейс не загружен, тогда селен напрямую вызовет элемент DOM или, если элемент пользовательского интерфейса загружается, он не выполнит выполнение? Я был бы очень признателен за более подробное объяснение этого вопроса.
Селен: Как селен определяет видимые элементы или нет? Возможно ли, что он загружается в DOM, но не отображается в пользовательском интерфейсе?
Ответы (1)
Selenium может определять присутствие или видимость элементов, как только они присутствуют или видимы < / em> в HTML DOM. С точки зрения пользователя вы можете вызвать
isDisplayed()
в WebElement, чтобы проверить, отображается предполагаемый WebElement или нет. В соответствии с текущей реализацией Selenium может не различать загруженные и визуализированные элементы. ElementToBeClickable метод в ExpectedConditions класс устанавливает ожидание для проверки того, является ли элемент видимым и включен < / em>, чтобы его можно было щелкнуть.Когда элемент загружен в DOM, но пользовательский интерфейс показывает, что загрузка выполняется, вам все равно придется ждать вызовов JavaScript и AJAX < / em>, чтобы завершить загрузку страницы, чтобы все WebElements на странице стали интерактивными. Самое большее дождаться полной загрузки вы можете установить
pageLoadStrategy
на нормальный, но, возможно, все равно придется вызвать WebDriverWait для предполагаемого WebElement em >, чтобы стать текущим, видимым, интерактивным или интерактивным.
Здесь вы можете найти подробное обсуждение стратегии загрузки страницы em>
- Разумеется, , если пользовательский интерфейс не загружен Selenium, возможно, не сможет взаимодействовать с некоторыми элементами DOM.
Обновлять
В соответствии с вашим встречным вопросом, вот различные этапы WebElement и соответствующие ExpectedConditions для проверки этапов:
-
presenceOfElementLocated(By locator) An expectation for checking that an element is present on the DOM of a page. This does not necessarily mean that the element is visible.
-
visibilityOf(WebElement element) An expectation for checking that an element, known to be present on the DOM of a page, is visible. Visibility means that the element is not only displayed but also has a height and width that is greater than 0.
Элемент должен быть интерактивным:
elementToBeClickable(By locator) An expectation for checking an element is visible and enabled such that you can click it.
Примечание. Согласно документации Элемент является Кликабельно - отображается и активируется.
presence
, visibility(displayed)
и interactability(clickability)
все связаны с разными состояниями WebElement в HTML DOM. Состояния разные. Используйте соответствующие ExpectedConditions в соответствии с вашими требованиями.
- person DebanjanB; 27.02.2018