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

如何实现点击按钮后等待无预定义超时的表格行加载

解决方案

问题根源

你的代码里blnFound始终为false,核心原因是Cypress命令是异步执行的:同步的do..while循环会在cy.get().then()里的赋值代码运行前就完成多次迭代,循环判断!blnFound时,赋值操作根本还没执行,自然永远无法终止循环。

正确实现方式(递归重试)

用递归函数替代同步循环,完全适配Cypress的异步执行逻辑,同时实现超时控制:

// 初始化计时和最大超时阈值(45分钟)
const startTime = new Date().getTime();
const MAX_TIMEOUT_MS = 45 * 60 * 1000;

// 递归检查函数
const checkTableRows = () => {
  // 点击搜索按钮触发表格加载
  cy.get(pageCommonID.btnSearch(), { timeout: Cypress.env('GLOBAL_TIMEOUT_ms'), log: true })
    .scrollIntoView()
    .click({ force: true, multiple: true });

  // 检查表格行数量
  cy.get(pageWorkloadCaseID.tblResult()).find('tr').then((rows) => {
    if (rows.length !== 0) {
      // 找到有效行,终止递归
      return;
    }

    // 计算已等待时长
    const elapsedTime = new Date().getTime() - startTime;
    console.log('info', strID, `Case not found in Table. Elapsed Time: ${(elapsedTime / 1000 / 60).toFixed(2)} Min`);

    // 超时判断
    if (elapsedTime >= MAX_TIMEOUT_MS) {
      throw new Error('Case not found in Table. Waiting Time exceeded 45Min');
    }

    // 等待指定时长后重试
    cy.wait(Cypress.env('BIT_GLOBAL_TIMEOUT_MEDIUM'));
    checkTableRows();
  });
};

// 启动检查流程
checkTableRows();

优化点:仅单次点击搜索

如果搜索按钮点击一次后,后端会持续更新表格状态,不需要重复点击,可以把点击操作移到递归外部,只执行一次:

const startTime = new Date().getTime();
const MAX_TIMEOUT_MS = 45 * 60 * 1000;

// 仅点击一次搜索按钮
cy.get(pageCommonID.btnSearch(), { timeout: Cypress.env('GLOBAL_TIMEOUT_ms'), log: true })
  .scrollIntoView()
  .click({ force: true, multiple: true });

const checkTableRows = () => {
  cy.get(pageWorkloadCaseID.tblResult()).find('tr').then((rows) => {
    if (rows.length !== 0) return;

    const elapsedTime = new Date().getTime() - startTime;
    console.log('info', strID, `Case not found in Table. Elapsed Time: ${(elapsedTime / 1000 / 60).toFixed(2)} Min`);

    if (elapsedTime >= MAX_TIMEOUT_MS) {
      throw new Error('Case not found in Table. Waiting Time exceeded 45Min');
    }

    cy.wait(Cypress.env('BIT_GLOBAL_TIMEOUT_MEDIUM'));
    checkTableRows();
  });
};

checkTableRows();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:01:12