Python & Selenium:driver.implicitly_wait() 和 time.sleep() 之间的区别

Dip*_*lui 6 python selenium sleep selenium-webdriver implicitwait

是的,我知道两者都习惯于等待某个指定的时间。

硒:

driver.implicitly_wait(10)
Run Code Online (Sandbox Code Playgroud)

Python:

import time
time.sleep(10)
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别吗?

Deb*_*anB 10

时间.睡眠(秒)

time.sleep(secs)在给定的秒数内暂停当前线程的执行。参数可能是一个浮点数,以指示更精确的睡眠时间。实际的暂停时间可能比请求的少,因为任何捕获的信号都会在执行该信号的捕获例程后终止 sleep()。此外,由于系统中其他活动的调度,暂停时间可能比任意数量的请求长。

您可以在How to sleep webdriver in python for milliseconds 中找到详细讨论


隐式等待(time_to_wait)

implicitly_wait(time_to_wait)是指定WebDriver实例的时间量,即驱动程序在搜索元素时应等待的时间,如果它不是立即出现在HTML DOM中,则SECONDS在尝试查找一个或多个元素时,如果它们不是立即可用。默认设置为0,这意味着driver当找到查找一个或多个元素的指令时,搜索开始并且结果立即可用。

在这种情况下,在重新加载网页之后,可能会/可能不会在立即搜索中找到一个或多个元素。因此,您的自动化脚本可能面临以下任何异常:

因此我们引入了ImplicitWait。通过引入ImplicitWait驱动程序将轮询DOM 树,直到在配置的时间内找到该元素,然后在抛出NoSuchElementException. 到那时,您一直在寻找的一个或多个元素可能在HTML DOM 中可用。作为您的代码已经设置ImplicitWait为值10秒,司机将轮询HTML DOM10秒。

您可以在使用硒中的隐式等待中找到详细讨论

  • 你好,@unDetected_Selenium,如果这是真的,你能确认 Fiona 的这个答案吗?`driver.implicitly_wait(10) 等待元素最多 10 秒。如果 2 秒后找到,则代码将继续执行,无需等待更多 8 秒。` 谢谢 (2认同)

小智 7

  • time.sleep(10) 将代码执行暂停 10 秒。
  • driver.implicitly_wait(10) 最多等待 10 秒以等待元素出现。如果在 2 秒后找到,则代码将继续执行而不会等待 8 秒。