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

时间:2019-06-20 07:54:53

标签: python selenium

某些元素可能不存在于页面中,但是我必须等待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 你失败了

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

1 个答案:

答案 0 :(得分:0)

硒没有默认的30秒等待时间。

您描述的行为可能是由于在代码中的某个位置设置了30秒的隐式等待所致。

您可以通过调用

将隐式等待重置为默认值
driver.implicitly_wait(0)

由于当前遇到的问题,通常使用隐式等待是一种反模式。我建议从代码中删除所有隐式等待,而仅使用显式等待。

还要注意混合隐式和显式等待。如果这样做,您将处在未定义功能的境界,并且取决于驱动程序二进制文件和驱动程序绑定的实现,您可能会得到各种各样的行为。隐式等待可能优先,或者显式等待可能优先,这给您带来奇怪且变化的等待时间,但这并不总是有意义的。