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

新手上路,请多包涵

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

硒:

 driver.implicitly_wait(10)

Python:

 import time
time.sleep(10)

这两者之间有什么区别吗?

原文由 Dipankar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 698
1 个回答

时间.睡眠(秒)

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

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


隐式等待(等待时间)

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

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

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

您可以在 Using implicit wait in selenium 中找到详细的讨论

原文由 undetected Selenium 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题