В чем разница между неявным ожиданием и AjaxElementLocatorFactory?
По определению,
Неявное ожидание - это указание веб-драйверу опрашивать DOM в течение определенного времени при попытке найти элемент или элементы, если они не доступны сразу.
См. Неявное ожидание
Таймаут для WebElement будет назначен классу страницы объекта с помощью AjaxElementLocatorFactory.
Сверху неясно, в чем именно разница между неявным ожиданием и AjaxElementLocatorFactory. Пожалуйста, объясни.
2 ответа
Неявное ожидание относится ко всему объекту драйвера (и применимо ко всем поискам, выполняемым в контексте драйвера). AjaxElementLocatorFactory
используется, когда вы инициируете элементы вашего класса Page. Так что ожидания имеют отношение только к элементам, которые вы описываете в своем классе Page.
поскольку AjaxElementLocatorFactory
использует базовый поиск, но просто обертывает его более гибкой логикой, неявное ожидание, которое применимо ко всем поискам, выполняемым в контексте вашего драйвера, может быть добавлено к таймаутам, которые вы установили для своегоAjaxElementLocator
(в зависимости от обстоятельств). Следовательно, не рекомендуется смешивать их, и в целом рекомендуется избегать использования неявных ожиданий (по умолчанию установлено значение 0).
Неявное ожидание
Неявное ожидание - это подход к настройке WebDriver для опроса DOM в течение определенного периода времени при попытке найти элемент / элементы, если они не доступны сразу в HTML DOM. Значение по умолчанию - 0. После установки неявное ожидание устанавливается на время жизни экземпляра объекта WebDriver.
Вы можете найти пару соответствующих обсуждений в:
- Использование неявного ожидания в селене
- селен неявно ждать не работает
- Python и Selenium: разница между driver.implicitly_wait() и time.sleep ()
AjaxElementLocatorFactory
AjaxElementLocatorFactory - одно из ключевых преимуществ в реализации официанта при использовании фабрики страниц с использованием AjaxElementLocatorFactory
Учебный класс.
AjaxElementLocatorFactory - это в основном концепция отложенной загрузки, реализованная в шаблоне фабрики страниц для идентификации WebElements только тогда, когда они используются в какой-либо операции, то есть timeOut для WebElement, который может быть назначен классу страницы Object с помощью AjaxElementLocatorFactory.
Пример:
AjaxElementLocatorFactory myFactory = new AjaxElementLocatorFactory(driver, 20); PageFactory.initElements(myFactory, this)
Объяснение:
В приведенном выше блоке кода, когда над элементом выполняется операция, ожидание его видимости начинается только с этого момента. Если элемент не найден в заданный интервал времени, выполнение тестового примера вызовет
NoSuchElementException
исключение.
Вы можете найти соответствующее обсуждение в разделе Как реализовать AjaxElementLocatorFactory через Selenium и Page Factory?