是的,我知道两者都习惯于等待某个指定的时间。
硒:
driver.implicitly_wait(10)
Python:
import time
time.sleep(10)
这两者有什么区别吗?
是的,我知道两者都习惯于等待某个指定的时间。
硒:
driver.implicitly_wait(10)
Python:
import time
time.sleep(10)
这两者有什么区别吗?
time.sleep(secs)
在给定的秒数内暂停当前线程的执行。该参数可以是一个浮点数,以指示更精确的睡眠时间。实际的挂起时间可能少于请求的时间,因为任何捕获的信号都会在执行该信号的捕获例程后终止 sleep()。此外,由于系统中其他活动的调度,暂停时间可能比请求的时间长任意量。
您可以在How to sleep webdriver in python for milliseconds中找到详细讨论
implicitly_wait(time_to_wait)用于指定WebDriver实例的时间量,即驱动程序在搜索元素时应等待的时间,如果它没有立即出现在HTML DOM中,则SECONDS
在尝试查找一个或多个元素时,如果它们不是立即可用。默认设置为0,这意味着driver
当找到查找一个或多个元素的指令时,搜索开始并且结果立即可用。
在这种情况下,在重新加载网页后,一个或多个元素可能会/可能不会在立即搜索中找到。因此,您的自动化脚本可能面临以下任何异常:
NoSuchElementException
TimeoutException
ElementNotVisibleException
ElementNotSelectableException
ElementClickInterceptedException
ElementNotInteractableException
因此我们引入ImplicitWait。通过引入ImplicitWait,驱动程序将轮询DOM 树,直到在配置的时间内找到元素,然后在抛出NoSuchElementException
. 到那时,您一直在寻找的一个或多个元素可能在HTML DOM中可用。在您的代码中,您已经将ImplicitWait设置为10秒的值,驱动程序将轮询HTML DOM 10秒。
您可以在使用 selenium 中的隐式等待中找到详细讨论
当我们在测试脚本中使用隐式等待时,它是全局声明的,它将自动应用于该脚本上的所有元素,例如,如果您使用隐式等待,则在 java 中。--> 驱动程序。manage().timeouts().implicitwait(10,timeunit.seconds);. 此代码将等待元素出现在 DOM 中,直到元素变得可见时,它才会等待,执行将继续。在保持脚本执行期间停止。
在这种情况下,在 thread.sleep(1000) 中,脚本将保持 1000 毫秒,无论元素是否在 500 毫秒时在 dom 上可见,它将一直保持到 1000 毫秒。
Thread.sleep() 是一个静态等待,它将脚本持续时间保持固定的时间。隐式等待将暂停脚本执行,直到元素在 DOM 中可见。
希望这可以帮助!