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

使用webdriver.io做自动化测试报404 invalid session id错误如何解决

报错触发原因
  • 测试用例未适配异步执行逻辑:Webdriver.IO v7及以上版本默认启用异步执行模式,你提供的测试代码用了同步写法,所有browser API调用没有加await修饰,代码执行顺序混乱,测试用例可能在所有操作完成前就被判定结束,会话被提前销毁,后续操作请求就会返回无效会话错误。
  • 会话空闲超时:测试代码中设置了browser.pause(5000)的5秒等待,如果wdio配置中的会话空闲超时时间小于5秒,会话会被服务端主动销毁,后续的元素查找、断言操作就会触发404无效会话报错。
  • 驱动/浏览器兼容性问题:使用的Webdriver驱动(如chromedriver)与本地浏览器版本不匹配,运行过程中驱动异常崩溃,导致对应会话失效。
  • 浏览器进程异常退出:测试运行过程中浏览器被系统强制回收资源、崩溃,或者被手动关闭,都会直接导致会话失效。
修复方案
  1. 首先修改测试代码适配异步执行规则,给所有异步API加上async/await修饰,修改后代码如下:
describe("Main Page",()=>{
    // 测试用例函数加async修饰
    it("Verify List Items",async ()=>{
        // 所有browser API调用前加await
        await browser.url("/");
        await browser.pause(5000)

        // 元素查找API也需要加await
        const listExamples = await $$("//div[@id='content']//ul/li");
        expect (listExamples).toBeElementsArrayOfSize(45);
        
        console.log(listExamples);
    })
})
  • 调整wdio配置的超时参数:打开wdio.conf.js,把idleTimeout参数调整为大于测试中最长等待时间的值,建议设置为10000(10秒)以上,避免会话被提前回收。
  • 校验驱动版本一致性:确保安装的浏览器驱动版本和本地浏览器大版本完全匹配,比如Chrome 118就需要安装chromedriver@118版本的依赖。
  • 排查浏览器运行异常:可以先关闭无头模式,用有头浏览器运行测试,观察运行过程中是否有浏览器崩溃、权限弹窗等异常问题,针对性处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:36:01