当 Selenium 中的预期条件失败时,不遵守 waitTime

Posted

技术标签:

【中文标题】当 Selenium 中的预期条件失败时,不遵守 waitTime【英文标题】:waitTime not respected when Expected Condition fails in Selenium 【发布时间】:2021-09-22 02:48:21 【问题描述】:

我有以下示例代码:

try:
  element_found = WebDriverWait(driver, 10).until(EC.presence_of_element_located(By.XPATH,'//div[@class='sample-class']))
  print("Success")
except Exception:
  print("Failure")

当元素被定位时,等待时间为 10 秒,因此打印 'Success' is <=10 seconds 所花费的时间,但当预期条件失败时,则持续打印 'Failure' is 50 seconds 所花费的时间。

那么为什么10 seconds limit not honored 是一个失败案例呢?为什么要50 seconds?

【问题讨论】:

【参考方案1】:

看起来你有

driver.implicitly_wait(30)

您的代码中也有隐式等待。

这就是官方关于隐式等待与显式等待混合的说法:

警告:不要混合隐式和显式等待。这样做会导致不可预测的等待时间。例如,设置隐式等待 10 秒和 15 秒的显式等待可能导致超时 20 秒后发生。

Reference link

【讨论】:

以上是关于当 Selenium 中的预期条件失败时,不遵守 waitTime的主要内容,如果未能解决你的问题,请参考以下文章

Python Selenium 网络驱动程序。写我自己的预期条件

Selenium 预期条件,等到元素可交互?

跳过测试和预期失败.py

WiX ScheduleReboot 不遵守条件

为啥可点击的预期条件不执行 click()?

WebDriverWait 预期条件中的逻辑运算符