【问题标题】:Selenium - WebDriverWait until any xpath saved in a list is foundSelenium - WebDriverWait 直到找到保存在列表中的任何 xpath
【发布时间】:2020-12-11 16:47:53
【问题描述】:

我有一个元素的多个 xpath,都保存在一个列表中。我编写了自己的等待函数,但如果可能的话,我想利用原来的函数。

这个想法是等待 15 秒或直到找到列表中的任何 xpath。

我发现了这个使用多个 xpath 的例子:

WebDriverWait(driver,15).until(lambda driver: driver.find_element(By.XPATH, "//example_xpath") or driver.find_element(By.XPATH, "//example_xpath"))

但是,我的 xpath 位于列表中,并且事先不知道大小:

xpath_list = ["//div[@id='test']", "//div[@id='test2']"]

我完全不明白我会怎么写。

【问题讨论】:

  • 怎么会有你事先不知道的xpath?

标签: python selenium xpath webdriverwait


【解决方案1】:
WebDriverWait(driver,15).until(EC.presence_of_all_elements_located(By.xpath,"//div[@id='test' or @id='test2']"))

为什么不能只使用 xpath 'or' 和 EC.precence_of_all_elements_located

【讨论】:

  • 他使用动态列表来存储可变数量的 xpath。
【解决方案2】:

你只需要一个“真”来触发你的等待通过。所以这样的事情可能会起作用

from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver,15).until(lambda driver:
    passWait = false
    for xpath in xpath_list:
        if (EC.presence_of_element_located((By.XPATH, xpath))):
            passWait = true
            break
    passWait


)

抱歉,快速回答,可能有错别字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 2011-10-20
    相关资源
    最近更新 更多