В чем разница между неявным ожиданием и AjaxElementLocatorFactory?

По определению,

Неявное ожидание - это указание веб-драйверу опрашивать DOM в течение определенного времени при попытке найти элемент или элементы, если они не доступны сразу.

См. Неявное ожидание

Таймаут для WebElement будет назначен классу страницы объекта с помощью AjaxElementLocatorFactory.

См. AjaxElementLocatorFactory

Сверху неясно, в чем именно разница между неявным ожиданием и AjaxElementLocatorFactory. Пожалуйста, объясни.

2 ответа

Неявное ожидание относится ко всему объекту драйвера (и применимо ко всем поискам, выполняемым в контексте драйвера). AjaxElementLocatorFactoryиспользуется, когда вы инициируете элементы вашего класса Page. Так что ожидания имеют отношение только к элементам, которые вы описываете в своем классе Page.

поскольку AjaxElementLocatorFactoryиспользует базовый поиск, но просто обертывает его более гибкой логикой, неявное ожидание, которое применимо ко всем поискам, выполняемым в контексте вашего драйвера, может быть добавлено к таймаутам, которые вы установили для своегоAjaxElementLocator(в зависимости от обстоятельств). Следовательно, не рекомендуется смешивать их, и в целом рекомендуется избегать использования неявных ожиданий (по умолчанию установлено значение 0).

Неявное ожидание

Неявное ожидание - это подход к настройке WebDriver для опроса DOM в течение определенного периода времени при попытке найти элемент / элементы, если они не доступны сразу в HTML DOM. Значение по умолчанию - 0. После установки неявное ожидание устанавливается на время жизни экземпляра объекта WebDriver.

Вы можете найти пару соответствующих обсуждений в:


AjaxElementLocatorFactory

AjaxElementLocatorFactory - одно из ключевых преимуществ в реализации официанта при использовании фабрики страниц с использованием AjaxElementLocatorFactory Учебный класс.

AjaxElementLocatorFactory - это в основном концепция отложенной загрузки, реализованная в шаблоне фабрики страниц для идентификации WebElements только тогда, когда они используются в какой-либо операции, то есть timeOut для WebElement, который может быть назначен классу страницы Object с помощью AjaxElementLocatorFactory.

  • Пример:

    AjaxElementLocatorFactory myFactory = new AjaxElementLocatorFactory(driver, 20);
    PageFactory.initElements(myFactory, this)
    
  • Объяснение:

    В приведенном выше блоке кода, когда над элементом выполняется операция, ожидание его видимости начинается только с этого момента. Если элемент не найден в заданный интервал времени, выполнение тестового примера вызоветNoSuchElementException исключение.

Вы можете найти соответствующее обсуждение в разделе Как реализовать AjaxElementLocatorFactory через Selenium и Page Factory?