Селен: как селен идентифицирует видимые элементы или нет? Возможно ли, что он загружен в DOM, но не отображается в интерфейсе?

  1. Селен: как селен идентифицирует видимые элементы или нет? Возможно ли, что он загружен в DOM, но не отображается в интерфейсе? Я хотел бы проверить сценарий, в котором элемент кликабелен, я знаю, что у веб-диска есть метод "ElementToBeClickable", однако, я хотел бы знать, как он работает. Пожалуйста помоги мне с этим.
  2. Кроме того, как обработать сценарий, когда элемент загружается в DOM, но пользовательский интерфейс показывает загрузку в процессе, как ждать полной загрузки?
  3. Пожалуйста, дайте мне знать, если пользовательский интерфейс не загружен, то селен будет напрямую вызывать элемент 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.
    

Примечание. Согласно документу " Элемент кликабелен" - он отображается и активируется.

Другие вопросы по тегам