atesting.ru Блог Синхронизация в Selenium Python

Синхронизация в Selenium Python

В предыдущих статьях о Selenium Python Tutorial мы рассмотрели «Исполнитель JavaScript в Selenium Python». В этом руководстве мы изучим Синхронизацию в Selenium Python .

При работе с такими инструментами автоматизации, как Selenium, Protractor и т. Д., Мы обычно сталкиваемся с ситуациями, когда на загрузка страницы и ее веб-элементов. Таким образом, это приводит к ситуации, когда существуют проблемы с синхронизацией между элементами на странице и действиями, выполняемыми Selenium.

Проблемы синхронизации часто приводят к сбоям в идентификации элементов из-за отсутствия этого элемента в DOM, что приводит к исключению ElementNotVisibleException. Чтобы закрыть эти лазейки, Selenium придумал концепцию ожидания, которая замедляет процесс идентификации элементов и задач, которые над ними нужно выполнить.

Типы ожидания веб-драйвера перечислены ниже:

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

Неявное ожидание — это динамическое ожидание, которое применимо для каждого элемента в нашем тестовом примере. Он носит динамический характер, потому что если мы добавляем неявное ожидание в две секунды и элемент становится доступным в первую секунду, то нам не нужно ждать все две секунды. Как только элемент становится доступным в DOM, элемент управления переходит к следующему этапу выполнения теста.

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

Синтаксис:

implicitly_wait (2), время в аргументе метода указано в секундах. .

Реализация кода с неявным ожиданием.

123456789 from selenium import webdriver # установка свойства для chromedriver.exedriver = webdriver.Chrome (executable_path = & # 34; C: \ chromedriver.exe & # 34;) # get метод для запуска applicationdriver.get (& # 34; https: //www.softwaretestingmaterial.com/")# неявное ожидание установлено на 2 секундыdriver.implicitly_wait (2) # закрыть браузерdriver.close ()

Таким образом, неявное ожидание легко с точки зрения реализации. Однако он снижает скорость выполнения и не обнаруживает проблем с производительностью в приложении. Неявное ожидание продолжает опрос до фиксированного времени, указанного пользователем, которое остается применимым до тех пор, пока сеанс драйвера не станет активным.

Явное ожидание в Selenium

Явное ожидание также является динамическим ожиданием, которое применимо к элементу, к которому оно применяется. Он носит динамический характер, потому что, если мы добавляем явное ожидание в три секунды и условие, установленное для элемента, выполняется в первую секунду, нам не нужно останавливать выполнение на все три секунды перед продолжением кода.

При явном ожидании нам нужно установить некоторые ожидаемые условия, которым должен удовлетворять элемент. Если критерии не соблюдены в течение продолжительности времени, генерируется исключение тайм-аута. Класс WebDriverWait и ExpectedCondition используются для создания явного ожидания. WebDriverWait автоматически вызывает ExpectedCondition с интервалом в 500 мс до тех пор, пока условие не будет возвращено как истинное.

Синтаксис:

12 wt = WebDriverWait (драйвер, 2) wt.until (expected_conditions.element_to_be_clickable ((By.ID, & # 34; txt-bx & # 34;)))

Некоторые из общих ожидаемых условий перечислены ниже:

  • 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
  • alert_is_present
  • element_present>
  • title_contains
  • visibility_of_element_located
  • присутствие_of_element_located
  • title_is
  • visibility_of
  • element_selection_state_to_be
  • присутствие_of_all_elements_located
  • element_located_to_be_selected

Реализация кода с явным ожиданием.

1234567891011121314151617 from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditionsfrom selenium.webdriver.support.wait import WebDriverWait # установка свойства для chromedriver.exedriver = webromedriver.Ch = webromedriver.Ch \ chromedriver.exe & # 34;) # get метод для запуска applicationdriver.get (& # 34; https: //www.softwaretestingmaterial.com/") # неявное ожидание установлено на 2 секундыdriver.implicitly_wait (2) # явное ожидание установлено на 2 секунды wt = WebDriverWait (driver, 2) # ожидаемое условие title_is должно быть выполнено wt. (expected_conditions.title_is (& # 34; Материалы для тестирования программного обеспечения — Учебники и видео по тестированию бесплатного программного обеспечения & # 34;)) # закрыть browserdriver.close ()

Таким образом, явное ожидание затруднено с точки зрения реализации. Однако это не снижает скорость выполнения и применяется к конкретному элементу по нашему выбору.

В следующей статье мы изучим команды Webelement в Selenium Python.

TAG: qa