How to sleep Selenium WebDriver in Python for milliseconds
Как перевести Selenium WebDriver в спящий режим на Python на миллисекунды
Я использую time библиотеку в своем скрипте:
import time time.sleep(1)
Он может перевести мой Selenium WebDriver в спящий режим на одну секунду, но как это возможно в течение 250 миллисекунд?
Переведено автоматически
Ответ 1
Чтобы приостановить выполнение webdriver на миллисекунды, вы можете передать number of seconds или floating point number of seconds следующим образом:
import time time.sleep(1) #sleep for 1 sec time.sleep(0.25) #sleep for 250 milliseconds
Однако при использовании Selenium и WebDriver для автоматизации использование time.sleep(secs) без каких-либо конкретных условий для достижениясводит на нет цель автоматизации, и ее следует избегать любой ценой. Согласно документации:
time.sleep(secs) приостанавливает выполнение текущего потока на заданное количество секунд. Аргументом может быть число с плавающей запятой для указания более точного времени ожидания. Фактическое время приостановки может быть меньше запрошенного, потому что любой перехваченный сигнал завершит sleep() после выполнения процедуры перехвата этого сигнала. Кроме того, время приостановки может быть больше запрошенного на произвольную величину из-за планирования других действий в системе.
Итак, согласно обсуждению, вместо time.sleep(sec) вы должны использовать WebDriverWait() в сочетании с expected_conditions() для проверки состояния элемента, и три широко используемых expected_conditions следующие:
Parameter : locator - used to find the element returns the WebElement once it is located
Description : An expectation for checking that an element is present on the DOM of a page. This does not necessarily mean that the element is visible or interactable (i.e. clickable).
Parameter : locator - used to find the element returns the WebElement once it is located and visible
Description : An expectation for checking that an element is present on the DOM of a page and visible. Visibility means that the element isnot only displayed but also has a height and width that is greater than 0.
time.sleep() принимает аргумент с плавающей запятой:
time.sleep(0.25)
Документы (их стоит прочитать не в последнюю очередь потому, что они объясняют условия, при которых режим ожидания может оказаться короче или длиннее, чем ожидалось).
Ответ 3
Если вы хотите, чтобы он переходил в спящий режим за миллисекунды, используйте значения с плавающей запятой:
import time time.sleep(0.25)
#0.25 > 250ms #0.1 > 100ms #0.05 > 50ms
Ответ 4
Теоретически, time.sleep(0.25) вызывает ожидание в 250 мс. Однако фактическое ожидание может быть короче или длиннее, а не составлять ровно 250 мс. Это потому, что:
Фактическое время приостановки может быть меньше запрошенного, потому что любой перехваченный сигнал завершит sleep() после выполнения процедуры перехвата этого сигнала. Кроме того, время приостановки может быть больше запрошенного на произвольную величину из-за планирования других действий в системе.
Другие методы использования wait с selenium включают: