Python & Selenium: разница между driver.implicitly_wait () и time.sleep () - PullRequest
0 голосов
/ 03 декабря 2018

Да, я знаю, что оба используются для ожидания определенного времени.

Селен:

driver.implicitly_wait(10)

Python:

import time
time.sleep(10)

Есть ли разница между этими двумя?

Ответы [ 3 ]

0 голосов
/ 03 декабря 2018

Когда мы используем неявное ожидание в тестовом скрипте, оно объявляется глобально и автоматически применяется ко всем элементам этого скрипта и, например, в Java, если вы используете неявное ожидание.-> водитель.управления (). таймауты (). implictwait (10, timeunit.seconds) ;.этот код будет ожидать появления элемента в DOM, а затем будет ждать, когда элемент станет видимым, выполнение продолжится.во время удержания выполнение скрипта останавливается.

В thread.sleep (1000) в этом случае скрипт будет удерживаться в течение 1000 мс, независимо от того, будет ли элемент видим на dom при 500 мс, он останется в этой точке до 1000ms.

Thread.sleep () - статическое ожидание, в котором длительность скрипта сохраняется в течение фиксированного количества времени.Где в качестве неявного ожидания будет выполнено выполнение скрипта, пока элемент не станет видимым в DOM.

Надеюсь, это поможет!

0 голосов
/ 03 декабря 2018

time.sleep (с)

time.sleep(secs) приостанавливает выполнение текущего потока на указанное количество секунд.Аргумент может быть числом с плавающей запятой, чтобы указать более точное время сна.Фактическое время приостановки может быть меньше запрошенного, потому что любой перехваченный сигнал прервет sleep () после выполнения процедуры перехвата этого сигнала.Кроме того, время приостановки может быть больше, чем запрошено на произвольную величину из-за планирования других действий в системе.

Подробное обсуждение можно найти в Как перевести webdriver в pythonв миллисекундах


implicitly_wait (time_to_wait)

implicitly_wait (time_to_wait) указывает время, в течение которого экземпляр WebDriver т. е. драйвер должен ожидать при поиске элемента, если он не присутствует непосредственно в HTML DOM в терминах SECONDS при попытке найтиэлемент или элементы, если они не доступны сразу.По умолчанию установлено значение 0 , что означает driver, когда находит инструкцию для поиска элемента или элементов, поиск начинается, и результаты становятся доступными немедленно.

В этом случае послепри новой загрузке веб-страницы элемент или элементы могут быть / не найдены при немедленном поиске.Таким образом, ваш сценарий автоматизации может столкнуться с любым из следующих исключений:

Поэтому мы вводим ImplicitWait .Путем введения ImplicitWait драйвер будет опрашивать дерево DOM до тех пор, пока не будет найден элемент в течение настроенного периода времени, ищущегоэлемент или элементы перед броском NoSuchElementException.К тому времени элемент или элементы, которые вы искали, могут быть доступны в HTML DOM .Как и в вашем коде, вы уже установили ImplicitWait в значение 10 секунд, драйвер будет опрашивать HTML DOM для 10 секунд.

Подробное обсуждение можно найти в Использование неявного ожидания в селене

0 голосов
/ 03 декабря 2018
  • time.sleep (10) приостанавливает выполнение кода ровно на 10 секунд.
  • driver.implicitly_wait (10) ожидает максимум 10 секунд присутствия элемента.Если он найден через 2 секунды, выполнение кода будет продолжено без ожидания более 8 секунд.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...