是的,我知道两者都用于等待指定的时间。
硒:
driver.implicitly_wait(10)
Python:
import time
time.sleep(10)
这两者之间有什么区别吗?
答案 0 :(得分:1)
time.sleep(secs)
在给定的秒数内暂停当前线程的执行。该参数可以是浮点数,以指示更精确的睡眠时间。实际的暂停时间可能少于请求的暂停时间,因为任何捕获到的信号都会在执行该信号的捕获例程后终止sleep()。另外,由于系统中其他活动的安排,暂停时间可能比请求的时间长任意数量。
您可以在How to sleep webdriver in python for milliseconds
中找到详细的讨论 implicitly_wait(time_to_wait)用于指定 WebDriver 实例(即 driver )在搜索元素时应等待的时间(如果元素不立即出现在列表中)。如果找不到一个或多个元素,则SECONDS
的{{3}}个术语。默认设置为 0 ,这意味着driver
会在找到一条或多条元素的指令时开始搜索并立即提供结果。
在这种情况下,在重新加载网页后,可能立即搜索到一个或多个元素。因此,您的自动化脚本可能会遇到以下任何异常:
NoSuchElementException
TimeoutException
ElementNotVisibleException
ElementNotSelectableException
ElementClickInterceptedException
因此,我们介绍 ImplicitWait 。通过引入 ImplicitWait , driver 将轮询ElementNotInteractableException
,直到找到该元素已配置的时间,然后在抛出{之前寻找一个或多个元素。 {3}}。到那时,您一直在寻找的一个或多个元素可以在 HTML DOM 中使用。就像在您的代码中一样,您已经将 ImplicitWait 设置为 10 秒,驱动程序将轮询 HTML DOM 10 秒。
您可以在DOM Tree
中找到详细的讨论答案 1 :(得分:0)
答案 2 :(得分:0)
当我们在测试脚本中使用隐式等待时,它会全局声明,它将自动应用于该脚本中的所有元素,例如,如果您使用隐式等待,则它将自动应用于Java。 ->驱动程序。 manage()。timeouts()。implictwait(10,timeunit.seconds);。此代码将等待元素出现在DOM中,直到元素可见后,执行将继续。在暂停脚本执行期间停止。
在这种情况下,在thread.sleep(1000)中,脚本将保持1000ms,无论元素在dom处在500ms处可见,它将一直停留到1000 ms。
Thread.sleep()是一个静态等待,它将脚本持续时间保持固定的时间。隐式等待会导致脚本执行直到元素在DOM中可见。
希望这会有所帮助!