首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >或element_to_be_clickable selenium/python中的条件

或element_to_be_clickable selenium/python中的条件
EN

Stack Overflow用户
提问于 2022-10-25 11:29:36
回答 1查看 66关注 0票数 0

想了解如何解决python中.element_to_be_clickable函数中的“或”语句的问题。如果其中一个元素是可点击的,我希望我的脚本单击其中一个(元素)按钮(我想用完整的xpath在这个方法中列出它们)。目前,它只适用于一个button(/html/body/button[1])。有人能帮我吗?

代码语言:javascript
运行
复制
while True:
    try:
        button = WebDriverWait(window, timeout=(random.randint(5, 10)), poll_frequency=0.2).until(EC.element_to_be_clickable((By.XPATH, "/html/body/button[1]"))).click()
        break # leave while loop
    except TimeoutException:
        window.refresh()

尝试过,但没有成功:

代码语言:javascript
运行
复制
while True:
    try:
        button = WebDriverWait(window, timeout=(random.randint(5, 10)), poll_frequency=0.2).until(EC.element_to_be_clickable((By.XPATH, "/html/body/button[1]" or "/html/body/button[2]"))).click()
        break # leave while loop
    except TimeoutException:
        window.refresh()

谢谢你的回答!

EN

回答 1

Stack Overflow用户

发布于 2022-10-25 11:36:35

expected_condition

根据文件:

代码语言:javascript
运行
复制
An expectation that any of multiple expected conditions is true.
Equivalent to a logical 'OR'.
Returns results of the first matching condition, or False if none do.

它的使用示例如下:

代码语言:javascript
运行
复制
WebDriverWait(driver, 20).until(
    EC.any_of(
        EC.element_to_be_clickable((By.XPATH, "/html/body/button[1]")),
        EC.element_to_be_clickable((By.XPATH, "/html/body/button[2]"))
    )
)

UPD

如果我正确理解了上面链接的文档,上面的代码块将返回一个布尔值,而不是一个web元素对象。所以,你不能直接点击它。要执行单击,我建议使用以下代码:

代码语言:javascript
运行
复制
if WebDriverWait(driver, 20).until(EC.any_of(EC.element_to_be_clickable((By.XPATH, "/html/body/button[1]")), EC.element_to_be_clickable((By.XPATH, "/html/body/button[2]")))):
    try:
        driver.find_element(By.XPATH, "/html/body/button[1]").click()
    except:
        driver.find_element(By.XPATH, "/html/body/button[2]").click()

解释:

如果函数返回if,代码流将进入True块。这意味着至少找到了一个可点击的元素。

所以,我们可以尝试点击第一个元素。

如果它是可点击的-点击将完成。

否则,将单击第二个元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74193372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档