You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Selenium识别按钮点击后的流程完成状态

Selenium 等待流程执行完成的循环实现方案

针对你的需求,核心思路是循环检查状态元素的文本值,直到状态变为执行完成(值为"1"),同时处理执行中(值为"2")的等待逻辑,还要避免无限循环和元素异常。

实现代码(Python)

import time
from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException

# 先执行触发流程的按钮操作(比如 driver.find_element(...).click())

# 设置最大等待超时时间(单位:秒,示例为5分钟)
max_wait_time = 300
start_timestamp = time.time()

while True:
    # 检查是否超时
    if time.time() - start_timestamp > max_wait_time:
        raise TimeoutError("等待流程完成超时,请检查流程状态")
    
    try:
        # 每次循环重新定位元素,避免页面刷新导致的元素引用失效
        span_control = driver.find_element_by_css_selector("span[class='status-execution-process']")
        current_status = span_control.text.strip()

        if current_status == "1":
            print("流程已执行完成")
            break  # 退出循环,执行后续操作
        elif current_status == "2":
            print("流程执行中,持续等待...")
            time.sleep(1)  # 间隔1秒后再次检查,可根据实际耗时调整
        else:
            # 处理初始状态(0)或未知状态,短暂等待后重试
            print(f"当前状态:{current_status},等待流程启动...")
            time.sleep(0.5)
    except (NoSuchElementException, StaleElementReferenceException):
        # 元素暂时不可见或已过期,短暂等待后重试
        print("元素状态更新中,重试检查...")
        time.sleep(0.5)

关键说明

  • 重新定位元素:流程执行中页面可能存在局部刷新,若复用初始定位的元素会触发StaleElementReferenceException,因此每次循环都要重新获取元素
  • 超时控制:设置最大等待时间,避免因流程异常导致脚本无限挂起
  • 异常处理:捕获元素找不到、元素过期的常见异常,保证脚本稳定性
  • 等待间隔:根据流程实际耗时调整time.sleep()的参数,平衡资源占用和响应速度

内容的提问来源于stack exchange,提问作者philip Gue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:55:24