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

WebdriverIO调用browser.getMetrics报NO_TTI_CPU_IDLE_PERIOD错误求助

错误根因

LHError: NO_TTI_CPU_IDLE_PERIOD错误是WebdriverIO性能采集底层依赖的Lighthouse工具抛出的,发生在计算**Time to Interactive(TTI,可交互时间)**指标的阶段。Lighthouse判定TTI的标准是页面完成核心内容渲染后,存在至少5秒的CPU和网络双空闲窗口,当测试页面在采集周期内始终有持续的CPU任务占用、没有符合要求的空闲窗口时,就会触发该报错。

可行解决思路
  • 跳过TTI指标采集
    如果你不需要TTI指标,可直接在调用getMetrics()时指定排除该指标,是成本最低的解决方案,参考代码如下:

    const metrics = await browser.getMetrics({
      exclude: ['interactive']
    })
    
  • 延长性能采集前置等待时间
    调用getMetrics()前增加等待逻辑,给页面足够时间完成所有后台加载、异步渲染、数据上报等任务,优先使用元素等待替代固定时长等待,稳定性更高:

    // 等待核心业务元素渲染完成
    await $('#core-business-element').waitForDisplayed({ timeout: 10000 })
    // 额外预留空闲等待窗口
    await browser.pause(5000)
    const metrics = await browser.getMetrics()
    
  • 放宽Lighthouse空闲窗口判定阈值
    通过自定义Lighthouse配置,降低TTI计算对空闲窗口的时长要求,适配后台任务较多的页面场景:

    const metrics = await browser.getMetrics({
      lighthouseConfig: {
        settings: {
          // 将要求的CPU/网络空闲窗口从默认5000ms调整为3000ms
          cpuQuietThresholdMs: 3000,
          networkQuietThresholdMs: 3000,
          maxWaitForTrace: 60000
        }
      }
    })
    
  • 排查优化页面持续后台任务
    如果需要获取准确的TTI指标,需要对测试页面本身进行排查优化:

    • 清理页面加载后持续运行的高频setInterval/setTimeout定时器
    • 暂停测试场景下非必要的接口轮询、websocket长连接推送
    • 临时屏蔽埋点上报、用户行为监控等非业务核心的第三方脚本
      完成优化后再进行性能指标采集即可正常获取TTI数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:27:03