Как перевести webdriver в python на миллисекунды
Я использую time
библиотека в моем скрипте:
import time
time.sleep(1)
Он может спать мой webdriver в течение 1 секунды, но мне нужно спать в течение 250 миллисекунд.
4 ответа
Ответы @BlackThunder и @NPE были в правильном направлении. Чтобы приостановить выполнение веб-драйвера на миллисекунды, вы можете передать 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)
приостанавливает выполнение текущего потока на указанное количество секунд. Аргумент может быть числом с плавающей запятой, чтобы указать более точное время сна. Фактическое время приостановки может быть меньше запрошенного, потому что любой перехваченный сигнал прервет режим сна () после выполнения процедуры перехвата этого сигнала. Кроме того, время приостановки может быть дольше, чем запрошено на произвольную величину из-за планирования других действий в системе.
Так что согласно обсуждению вместо time.sleep(sec)
ты должен использовать WebDriverWait()
в сочетании с expected_conditions()
чтобы проверить состояние элемента и три широко используемых ожидаемых условия следующие:
presence_of_element_located
sence_of_element_located(locator) определяется следующим образом:
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 (locator) определяется следующим образом:
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 (locator) определяется следующим образом:
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 не работает, как ожидалось
time.sleep()
принимает аргумент с плавающей точкой:
time.sleep(0.25)
Документы (их стоит прочитать не в последнюю очередь, потому что они объясняют условия, при которых сон может оказаться короче или дольше, чем ожидалось).
Если вы хотите, чтобы он спал в миллисекундах, используйте значения с плавающей запятой:
import time
time.sleep(0.25)
#0.25 > 250ms
#0.1 > 100ms
#0.05 > 50ms
Теоретически,
time.sleep(0.25)
вызывает ожидание 250 мс. Однако фактическое ожидание может быть короче или длиннее, а не ровно 250 мс. Это потому что:
Фактическое время приостановки может быть меньше запрошенного, потому что любой перехваченный сигнал завершит работу sleep() после выполнения подпрограммы перехвата этого сигнала. Кроме того, время приостановки может быть больше запрошенного на произвольную величину из-за планирования других действий в системе.
Другие методы использования ожидания с селеном включают в себя:
- Неявное ожидание:
driver.implicitly_wait(0.25)
- Явное ожидание:
WebDriverWait(driver).until(document_initialised)