Селен: как селен идентифицирует видимые элементы или нет? Возможно ли, что он загружен в DOM, но не отображается в интерфейсе?
- Селен: как селен идентифицирует видимые элементы или нет? Возможно ли, что он загружен в DOM, но не отображается в интерфейсе? Я хотел бы проверить сценарий, в котором элемент кликабелен, я знаю, что у веб-диска есть метод "ElementToBeClickable", однако, я хотел бы знать, как он работает. Пожалуйста помоги мне с этим.
- Кроме того, как обработать сценарий, когда элемент загружается в DOM, но пользовательский интерфейс показывает загрузку в процессе, как ждать полной загрузки?
- Пожалуйста, дайте мне знать, если пользовательский интерфейс не загружен, то селен будет напрямую вызывать элемент DOM, или если пользовательский интерфейс загружается, то он не выполнится? Я был бы очень признателен за более техническое объяснение этого.
1 ответ
Selenium может определять наличие или видимость элементов, как только они присутствуют или видны в HTML DOM. С точки зрения пользователя вы можете вызвать
isDisplayed()
метод в WebElement, чтобы проверить,отображается ли намеченный WebElement или нет. Согласно текущей реализации, Selenium может не различать загруженные и отображаемые элементы. Метод ElementToBeClickable в классе ExpectedConditions устанавливает ожидание проверки того, является ли элементвидимым и активным, чтобы вы могли щелкнуть по нему.Когдаэлемент загружен в DOM, но пользовательский интерфейс показывает загрузку в процессе, вам все еще нужно дождаться, пока вызовы JavaScript и AJAX завершат загрузку страницы, чтобы все WebElements на странице стали взаимодействующими. Максимум, чтобы дождаться полной загрузки, вы можете установить
pageLoadStrategy
в нормальном состоянии, но, возможно, все же придется заставить WebDriverWait для предполагаемого WebElement стать присутствующим, видимым, интерактивным или интерактивным.Здесь вы можете найти подробное обсуждение стратегии загрузки страницы.
Грубый, если пользовательский интерфейс не загружен, 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.
Примечание. Согласно документу " Элемент кликабелен" - он отображается и активируется.