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

Selenium-webdriver在GitHub Action中异常:报Cannot read property'driver' of undefined

解决GitHub Action中SauceLabs自动化测试"Cannot read property 'driver' of undefined"报错
  • 检查SauceLabs环境变量配置
    确认GitHub仓库的Secrets中已正确配置SAUCE_USERNAME和SAUCE_ACCESS_KEY,并且在Workflow文件里正确引用这些变量:

    env:
      SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}
      SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
    

    同时验证代码中读取环境变量的逻辑和本地/Jenkins一致,比如是否使用process.env.SAUCE_USERNAME这类方式获取值。

  • 确保driver初始化完成后再执行操作
    GitHub Action容器环境启动速度可能快于本地/Jenkins,容易出现代码在SauceLabs driver实例未完全初始化时就访问其属性的情况。检查代码中的异步逻辑,用async/await确保driver创建完成:

    async function initDriver() {
      const driver = await new Builder()
        .usingServer('https://ondemand.saucelabs.com/wd/hub')
        .withCapabilities(yourCapabilities)
        .build();
      return driver;
    }
    
    // 调用时必须await
    const driver = await initDriver();
    // 再执行后续driver相关操作
    
  • 排查网络连接问题
    GitHub Action的运行环境可能存在网络限制,导致无法正常连接SauceLabs服务。可以在Workflow中添加网络测试步骤:

    - name: Check SauceLabs connectivity
      run: curl -I https://ondemand.saucelabs.com/wd/hub
    

    如果连接失败,检查SauceLabs后台的IP白名单设置,将GitHub Action的IP段加入允许列表。

  • 确保依赖和环境完全一致
    GitHub Action是全新的容器环境,可能缺失本地/Jenkins中存在的依赖缓存或配置文件。Workflow中使用npm ci而非npm install安装依赖,保证依赖版本完全匹配:

    - name: Install dependencies
      run: npm ci
    

    同时检查代码是否依赖本地配置文件(如.saucerc),确保该文件已提交到仓库,或在Workflow步骤中动态生成。

  • 检查driver实例的作用域
    如果测试用例并行执行,全局共享的driver实例可能被某个测试销毁,导致其他测试访问时出现undefined。调整代码逻辑,让每个测试用例创建独立的driver实例,或在每个测试前重新初始化driver。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:35:10