WebDriver等待多个条件(OR逻辑求值)

问题描述 投票:0回答:2

使用Python,方法WebDriverWait用于等待网页上出现1个元素。 不用多次try/except,如何使用这个方法呢? 使用此方法的多个案例是否有 OR 选项? https://selenium-python.readthedocs.io/waits.html

python selenium selenium-webdriver webdriver webdriverwait
2个回答
12
投票

如果不使用多个

try/except{}
通过 OR 选项为两个元素引发 WebDriverWait,您可以使用以下解决方案之一:

  • 使用

    CSS_SELECTOR

    element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".element_A_class, .element_B_class"))
    
  • 通过

    lambda
    使用

    element = WebDriverWait(driver,20).until(lambda driver: driver.find_element(By.XPATH,"element_A_xpath") or driver.find_element(By.XPATH,"element_B_xpath"))
    

参考

您可以在以下位置找到一些相关讨论:


0
投票

从 selenium python v4.0.0 开始,您可以使用 EC.any_of 来查找多个条件或在一起:

# wait for either class1 or class2
WebDriverWait(driver, 30).until(
    EC.any_of(
        EC.presence_of_element_located((By.CLASS_NAME, "class1")),
        EC.presence_of_element_located((By.CLASS_NAME, "class2"))
    )
)
© www.soinside.com 2019 - 2024. All rights reserved.