某些元素可能不存在于页面中,但是我必须等待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 你失败了
我希望我已经等了十秒而不是三十秒!
答案 0 :(得分:0)
硒没有默认的30秒等待时间。
您描述的行为可能是由于在代码中的某个位置设置了30秒的隐式等待所致。
您可以通过调用
将隐式等待重置为默认值driver.implicitly_wait(0)
由于当前遇到的问题,通常使用隐式等待是一种反模式。我建议从代码中删除所有隐式等待,而仅使用显式等待。
还要注意混合隐式和显式等待。如果这样做,您将处在未定义功能的境界,并且取决于驱动程序二进制文件和驱动程序绑定的实现,您可能会得到各种各样的行为。隐式等待可能优先,或者显式等待可能优先,这给您带来奇怪且变化的等待时间,但这并不总是有意义的。