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

Mocha+Selenium自动化测试超时错误求助

Mocha.js + Selenium自动化测试超时问题排查方案

问题重现

报错信息:

Error: Timeout of 60000ms exceeded. For async tests and hooks,
ensure "done()" is called; if returning a Promise, ensure it resolves.

测试代码片段:

it('Steps para criação de GR', async function () {
    this.timeout(26000);
    await grpage.clickFinancial();

    await grpage.ButtonGr();

    await grpage.NewGr();
});

可能原因及解决步骤

1. 单测试用例超时设置未生效或时长不足

你给当前测试用例设了26秒超时,但最终触发的是60000ms的全局超时,说明要么全局超时优先级更高,要么26秒确实不够用:

  • 先把this.timeout(26000)改成this.timeout(60000)甚至更大的数值(比如100000),验证是否单纯是时长不够导致的超时。
  • 检查Mocha全局配置:如果启动命令加了--timeout 60000,或者配置文件里设了全局超时,单测试用例的超时值必须大于等于全局值才会生效。

2. 页面操作方法未正确返回Promise

grpage里的三个方法如果内部异步操作没正确返回Promise,会导致await失效,Mocha一直等不到测试完成,最终触发全局超时:

  • 逐个检查clickFinancial、ButtonGr、NewGr的实现,确保每个方法都正确返回异步操作的Promise。比如:
    // 正确示例:确保返回元素点击的Promise
    async clickFinancial() {
        const financialBtn = await driver.findElement(By.id('financial-btn'));
        return financialBtn.click();
    }
    
  • 如果方法里有自定义等待或逻辑,必须把整个操作包裹在Promise里,或者用async/await语法确保返回值是Promise。

3. 定位耗时最长的操作

给每个步骤加日志,排查哪个环节拖慢了整个测试:

it('Steps para criação de GR', async function () {
    this.timeout(60000);
    console.log('执行clickFinancial:', new Date().toLocaleTimeString());
    await grpage.clickFinancial();
    console.log('完成clickFinancial:', new Date().toLocaleTimeString());

    console.log('执行ButtonGr:', new Date().toLocaleTimeString());
    await grpage.ButtonGr();
    console.log('完成ButtonGr:', new Date().toLocaleTimeString());

    console.log('执行NewGr:', new Date().toLocaleTimeString());
    await grpage.NewGr();
    console.log('完成NewGr:', new Date().toLocaleTimeString());
});

找到耗时最长的步骤后针对性优化:比如用Selenium的WebDriverWait等待元素可点击,代替固定的setTimeout,减少不必要的等待时间。

4. 检查Mocha版本

如果使用的是较老的Mocha版本,对async/await的支持可能存在bug,升级到最新稳定版(比如v10+)试试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:05:16