В предыдущих статьях по Selenium Python Tutorial мы рассмотрели «JavaScript Executor в Selenium Python». В этом руководстве мы изучим Синхронизацию в Selenium Python.
При работе с инструментами автоматизации, такими как Selenium, Protractor и т. д., мы обычно сталкиваемся с ситуациями, когда для загрузка страницы и ее веб-элементов. Таким образом, это приводит к ситуации, когда существуют проблемы с синхронизацией между элементами на странице и действиями, выполняемыми Selenium.
Проблемы с синхронизацией часто приводят к сбоям в идентификации элементов из-за отсутствия этого элемента в DOM, что приводит к исключению ElementNotVisibleException. Чтобы закрыть эти лазейки, в Selenium придумали концепцию ожидания, которая замедляет процесс идентификации элементов и выполнения над ними задач.
Типы ожиданий веб-драйвера перечислены ниже:< h3>Неявное ожидание в Selenium
Неявное ожидание — это динамическое ожидание, применимое к каждому элементу в нашем тестовом примере. Он динамичен по своей природе, потому что если мы добавим неявное ожидание в две секунды и элемент будет доступен в первую секунду, то нам не нужно ждать все две секунды. Как только элемент становится доступным в DOM, элемент управления переходит к следующему шагу выполнения теста.
Неявное ожидание можно рассматривать как глобальное ожидание, поскольку оно в основном применяется к уровню набора тестов. Исключения тайм-аута будут предоставлены, если элемент недоступен после истечения неявного времени ожидания. Время неявного ожидания по умолчанию равно 0.
Синтаксис:
implicitly_wait (2), время в аргументе метода указано в секундах.
Реализация кода с неявным ожиданием.
123456789 | from selenium import webdriver# установка свойства для chromedriver.exedriver = webdriver.Chrome (executable_path=”C:\chromedriver.exe”)# get метод для запуска applicationdriver.get(“https://www.softwaretestingmaterial.com/”)# неявное ожидание установлено на 2 секундыdriver.implicitly_wait(2)#чтобы закрыть браузерdriver.close() |
Таким образом, неявное ожидание легко с точки зрения реализации. Однако это замедляет скорость выполнения и не улавливает проблемы с производительностью в приложении. Неявное ожидание продолжает опрос до фиксированного времени, указанного пользователем, которое остается применимым до тех пор, пока сеанс драйвера не станет активным.
Явное ожидание в Selenium
Явное ожидание также является динамическим ожиданием, применимым к элементу, к которому оно применяется. Он динамичен по своей природе, потому что если мы добавим явное ожидание в три секунды и условие, заданное для элемента, будет выполнено в первую секунду, нам не нужно останавливать выполнение на все три секунды, прежде чем продолжить код.
В явном ожидании нам нужно установить некоторые ожидаемые условия, которым должен удовлетворять элемент. Если критерии не выполняются в течение времени, создается исключение тайм-аута. Класс WebDriverWait и ExpectedCondition используются для создания явного ожидания. WebDriverWait автоматически вызывает ExpectedCondition с интервалом в 500 мс, пока условие не станет истинным.
Синтаксис:
12 | wt = WebDriverWait(driver, 2)wt.until (expected_conditions.element_to_be_clickable((By.ID, “txt-bx”))) |
Некоторые из распространенных ожидаемых условий перечислены ниже:
- text_to_be_present_in_element_value
- text_to_be_present_in_element
- element_to_be_selected
- staleness_of
- element_to_be_clickable
- invisibility_of_element_located
- frame_to_be_available_and_switch_to_it
- element_located_to_be_selected
- alert_is_present
- element_located_selection_state_to_be
- title_contains
- visibility_of_element_located
- presence_of_element_located
- title_is
- visibility_of
- element_selection_state_to_be
- presence_of_all_elements_located
- element_located_to_be_selected< /ul>
Реализация кода с явным ожиданием.