Вопрос-Ответ

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 следующие:

presence_of_element_located

presence_of_element_located(локатор) определяется следующим образом :

class selenium.webdriver.support.expected_conditions.presence_of_element_located(locator)

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).

visibility_of_element_located

visibility_of_element_located(локатор) определяется следующим образом :

class selenium.webdriver.support.expected_conditions.visibility_of_element_located(locator)

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 is not only displayed but also has a height and width that is greater than 0.

element_to_be_clickable

element_to_be_clickable(локатор) определяется следующим образом :

class selenium.webdriver.support.expected_conditions.element_to_be_clickable(locator)

Parameter : locator - used to find the element returns the WebElement once it is visible, enabled and interactable (i.e. clickable).

Description : An Expectation for checking an element is visible, enabled and interactable such that you can click it.

Ссылка

Подробное обсуждение можно найти в WebDriverWait, который работает не так, как ожидалось

Ответ 2

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 включают:


  1. Неявное ожидание: driver.implicitly_wait(0.25)

  2. Явное ожидание: WebDriverWait(driver).until(document_initialised)

python selenium selenium-webdriver