You need to enable JavaScript to run this app. 如何在webdriver.io中调整会话超时 解决长测试deleteSession报错
优惠活动
大模型
产品
解决方案
定价
更多

如何在webdriver.io中调整会话超时 解决长测试deleteSession报错

长测试用例末尾deleteSession报会话不存在的解决方案

你之前调整script超时的操作未生效,核心原因是该超时仅控制浏览器端同步脚本的最长执行时长,和WebDriver驱动、Selenium Grid的服务端会话空闲回收规则无关联,属于配置错位。

可落地的配置调整方案

  • 本地直连浏览器驱动的场景
    需在capabilities配置节点下通过timeouts字段覆盖驱动默认的会话过期阈值,不要在全局根级配置下零散设置。参考配置:
    capabilities: [{
      maxInstances: 1,
      browserName: 'chrome',
      timeouts: {
        // 会话空闲超时:单位毫秒,需比单条最长测试用例的运行时长预留30%冗余,比如3小时用例可配置为14400000(即4小时)
        session: 14400000,
        script: 1000000,
        pageLoad: 300000,
        implicit: 5000
      }
    }]
    
  • Selenium Grid分布式执行的场景
    客户端的超时配置优先级低于Grid的全局硬规则,仅客户端配置无法生效。需要在Grid服务的启动参数中调整全局会话超时阈值,示例启动命令:
    # 将Grid默认30分钟的空闲会话回收规则调整为4小时
    java -jar selenium-server-4.x.x.jar standalone --session-timeout 4h
    
    注意:如果Grid的会话超时阈值低于你客户端配置的时长,服务端仍会按自身规则回收会话。
  • 同步调整Mocha框架的执行超时
    在mochaOpts配置节点下将测试执行超时调整到和你长测运行时长匹配的范围,避免框架在测试执行中途主动断开连接:
    mochaOpts: {
      ui: 'bdd',
      // 单位毫秒,3小时的长测预留冗余可配置为12600000(即3.5小时)
      timeout: 12600000
    }
    

兜底容错方案

即便配置了合理的超时规则,仍可能因网络波动、驱动异常导致会话提前被回收,可通过以下方式避免deleteSession失败直接中断流程:

  • 在全局after钩子里增加会话状态校验逻辑,调用deleteSession前先判断会话是否有效,如果会话已被服务端回收,直接跳过清理操作,不抛出异常中断流程。示例实现:
    after () {
      const isSessionValid = browser.sessionId && browser.isConnected
      if (!isSessionValid) {
        console.log('会话已提前被服务端回收,跳过deleteSession清理操作')
        return
      }
      browser.deleteSession()
    }
    
  • 给长测试用例增加定时心跳逻辑:在2-3小时的执行周期内,每隔10-15分钟发送一次轻量WebDriver请求(比如获取当前页面URL),维持会话活跃状态,避免触发服务端的空闲超时回收规则。
    // 测试启动时初始化心跳定时器
    const heartbeatTimer = setInterval(() => {
      try {
        browser.getUrl()
      } catch (e) {
        console.log('心跳请求异常,当前会话可能已失效')
      }
    }, 600000) // 每10分钟执行一次心跳请求
    
    // 测试结束时清除定时器
    after(() => {
      clearInterval(heartbeatTimer)
    })
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 14:54:08