Selenium的等待操作
一、隐式等待
Selenium 有一种内置的方式来自动等待元素,称为隐式等待。 可以使用浏览器选项中的超时功能或驱动程序方法(如下所示)设置隐式等待值。
这是一个全局设置,适用于整个会话的每个元素位置调用。 默认值为 ,这意味着如果找不到该元素,它将 立即返回错误。如果设置了隐式等待,驱动程序将等待 返回错误之前所提供值的持续时间。请注意,只要 元素被找到,驱动程序将返回元素引用,代码将继续执行, 因此,较大的隐式等待值不一定会增加会话的持续时间。
警告:不要混合使用隐式等待和显式等待。 这样做可能会导致不可预测的等待时间。 例如,设置 10 秒的隐式等待 以及 15 秒的显式等待 可能会导致 20 秒后发生超时。
使用隐式等待求解我们的示例如下所示:
1 driver.implicitly_wait(2)
二、显式等待
显式等待是添加到代码中的循环,用于轮询应用程序 让特定条件在退出循环之前评估为 true,并且 继续执行代码中的下一个命令。如果在指定的超时值之前未满足条件, 代码将给出超时错误。由于应用程序不处于所需状态的方法有很多, 显式等待是指定要等待的确切条件的绝佳选择 在每个地方都需要它。 另一个不错的功能是,默认情况下,Selenium Wait 类会自动等待指定元素存在。
此示例以 lambda 的形式显示正在等待的条件。Python 还支持预期条件
1 wait = WebDriverWait(driver, timeout=2) 2 wait.until(lambda d : revealed.is_displayed())
三、强制等待
强制等待是添加到代码中,当运行到该位置,代码会被强制等待预设的时间时长,当超过预设的时长时,继续往下执行
1 import time 2 3 # 预设强制等待3秒 4 time.sleep(3)