提问人:AliRehman7141 提问时间:10/2/2018 最后编辑:Peter MortensenAliRehman7141 更新时间:1/26/2022 访问量:47130
如何在 Python 中让 Selenium WebDriver 休眠几毫秒
How to sleep Selenium WebDriver in Python for milliseconds
问:
我正在我的脚本中使用该库:time
import time
time.sleep(1)
它可以让我的 Selenium WebDriver 休眠一秒钟,但怎么可能休眠 250 毫秒呢?
答:
time.sleep()
采用浮点参数:
time.sleep(0.25)
文档(它们值得一读,尤其是因为它们解释了睡眠最终可能比预期更短或更长的条件)。
如果您希望它在几毫秒内进入睡眠状态,请使用浮点值:
import time
time.sleep(0.25)
#0.25 > 250ms
#0.1 > 100ms
#0.05 > 50ms
要暂停 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 for Automation 时,在没有任何特定条件的情况下使用 time.sleep(secs)
来实现违背了自动化的目的,应不惜一切代价避免。根据文档:
time.sleep(secs)
在给定的秒数内暂停当前线程的执行。该参数可以是浮点数,以指示更精确的睡眠时间。实际暂停时间可能小于请求的时间,因为任何捕获的信号都将在执行该信号的捕获例程后终止 sleep()。此外,由于系统中安排了其他活动,暂停时间可能比任意金额要求的时间长。
因此,根据讨论,您应该将 WebDriverWait
() 与 expected_conditions()
结合使用来验证元素的状态,并且三个广泛使用的expected_conditions如下:time.sleep(sec)
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 无法按预期工作中找到详细讨论
评论
expected_conditions
从理论上讲,需要等待 250 毫秒。但是,实际等待时间可能更短或更长,而不是精确的 250 毫秒。这是因为:time.sleep(0.25)
实际暂停时间可能小于请求的时间,因为任何捕获的信号都将在执行该信号的捕获例程后终止 sleep()。此外,由于系统中安排了其他活动,暂停时间可能比任意金额要求的时间长。
使用硒的等待的其他方法包括:
- 隐式等待:
driver.implicitly_wait(0.25)
- 显式等待:
WebDriverWait(driver).until(document_initialised)
评论