如何修改默认等待 30 秒找不到的元素



有些元素在页面中可能不存在,但我必须等待 30 秒,这让我非常苦恼,因为我必须找到许多可能不存在的元素。因此,如何修改找不到的默认 30 秒元素的问题一直困扰着我。

这个默认等待时间是否与硒包有关?

WebDriverWait(driver,5(.until(EC.presence_of_element_located((By.XPATH, '//input[@qtype="302"]'(((

WebDriverWait(driver,5(.until(EC.presence_of_all_elements_located((By.XPATH, '//input[@qtype="302"]'(((

但他们没有达到我等待十秒钟的期望

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import perf_counter
driver = webdriver.Chrome()
driver.get(‘xxx')
driver.implicitly_wait(10)
try:
    start = perf_counter()
    dLfy_topic = WebDriverWait(driver,5).until(EC.presence_of_all_elements_located((By.XPATH, '//input[@qtype="302"]')))
except:
    during = perf_counter() - start
    print(during)
finally:
    if during > 10:
        print("You failed")
    else:
        print("You are successful")

30.53863444600001你失败了

我希望我等了十秒钟而不是三十秒!

硒中没有内置默认的 30 秒等待。

您所描述的行为是由于在代码中的某个点设置 30 秒隐式等待而导致的。

您可以通过调用将隐式等待重置为默认值

driver.implicitly_wait(0)

通常,使用隐式等待是一种反模式,因为您当前看到的问题。 我建议从代码中删除所有隐式等待,只使用显式等待。

还要注意混合隐式和显式等待。 如果这样做,则处于未定义的功能领域,并且根据驱动程序二进制和驱动程序绑定实现,您可能会获得不同的行为。 隐式等待可能优先,或者显式等待可能优先,为您提供奇怪而多样的等待时间,这些时间并不总是有意义的。

最新更新