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

Cucumber-Selenium-Java如何实现长等待文件上传场景的自动化逻辑

长周期异步工作流场景自动化实现方案(Cucumber-Selenium-Java)

1. 前置任务批量预处理

  • 优先跑完30份业务申请的全量创建流程,将所有申请的唯一编号存入List<String> applyNoList集合统一管理,无需等待单份申请工作流完成再创建下一份,压缩前置操作耗时
  • 因系统要求申请必须按顺序解锁上传权限,后续轮询直接按申请创建顺序校验即可,无需做乱序适配

2. 自定义智能轮询等待逻辑

替换固定时长等待,使用Selenium原生FluentWait实现带间隔的轮询校验,既避免频繁请求压测服务,也能在按钮可用后第一时间触发后续操作:

  • 最大等待时长设为6分钟(覆盖最长5分钟的工作流处理时长,预留1分钟冗余)
  • 轮询间隔设为30秒,每次校验前刷新页面拉取最新的申请状态
  • 参考实现代码:
/**
 * 等待指定申请的文件上传按钮变为可点击状态
 * @param applyNo 申请唯一编号
 * @param driver WebDriver实例
 */
public void waitForUploadButtonReady(String applyNo, WebDriver driver) {
    // 按唯一编号搜索打开对应申请页面
    openApplyPageByNo(applyNo);
    new FluentWait<>(driver)
            .withTimeout(Duration.ofMinutes(6))
            .pollingEvery(Duration.ofSeconds(30))
            .ignoring(NoSuchElementException.class, ElementNotInteractableException.class)
            .until(d -> {
                // 刷新页面获取最新工作流状态
                d.navigate().refresh();
                WebElement uploadBtn = d.findElement(By.id("file-upload-btn"));
                return uploadBtn.isEnabled();
            });
}

3. 执行流程效率优化

  • 单份申请等待解锁的间隙,可插入执行不依赖申请状态的无关测试步骤,最大化利用等待空窗期
  • 某份申请的上传按钮解锁后,立即执行文件上传操作,完成后直接开始轮询下一份申请的状态,无额外等待

4. Cucumber用例层适配

  • 将核心逻辑拆分为独立可复用Step,降低代码冗余:
    • Given 批量创建{int}份业务申请
    • When 等待第{int}份申请的上传权限解锁
    • Then 为第{int}份申请上传测试文件
  • 使用Scenario Outline批量执行30份申请的上传流程,无需单独编写30份重复用例

5. 异常兜底处理

  • 单份申请等待超时时直接抛出流程异常,标记该申请异常后继续执行后续任务,避免阻塞整个测试套
  • 记录每次轮询的时间、申请编号、按钮状态,方便后续排查工作流卡顿或超时问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:42:03