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

Karate无头模式ChromeDriver报错‘chrome server returned empty list’求助

Karate UI测试headless Chrome启动失败解决方案

以下是针对你遇到的chrome server returned empty list报错的具体解决步骤:

  • 严格校验Chrome与ChromeDriver版本匹配
    headless模式对版本一致性的要求比正常模式更高,即使正常模式能运行,版本不匹配也会导致headless启动失败。执行chromedriver --version查看驱动版本,再打开Chrome浏览器输入chrome://version/查看浏览器版本,确保两者主版本号完全一致(比如都是118.x),不一致的话下载对应版本的ChromeDriver替换。

  • 补充headless模式必需的启动参数
    仅设置headless: true往往不够,需要添加额外参数规避环境或渲染问题。修改你的karate-config.js配置:

    config.chrome = {
      type: 'chrome',
      executable: '/opt/homebrew/bin/chromedriver',
      headless: true,
      args: [
        '--no-sandbox',
        '--disable-dev-shm-usage',
        '--remote-debugging-port=9222',
        '--window-size=1920,1080'
      ]
    };
    

    参数说明:

    • --no-sandbox:解决macOS/Linux下的沙箱权限限制
    • --disable-dev-shm-usage:避免系统共享内存不足导致的启动失败
    • --remote-debugging-port=9222:指定固定调试端口,避免随机端口被占用
    • --window-size=1920,1080:headless模式必须指定窗口大小,否则会出现渲染异常
  • 检查端口占用情况
    报错中的localhost:59435可能被其他进程占用,执行lsof -i :59435(macOS/Linux)查看占用进程,使用kill -9 <PID>杀掉对应进程后重试。或者直接在配置中指定固定调试端口(如上面的9222),避免随机端口冲突。

  • 验证ChromeDriver可执行权限
    确保/opt/homebrew/bin/chromedriver拥有执行权限,执行命令:

    chmod +x /opt/homebrew/bin/chromedriver
    

    权限不足会导致驱动无法正常启动。

  • 延长驱动启动超时时间
    headless模式启动速度可能慢于正常模式,默认超时时间可能不够。在配置中增加超时设置:

    config.chrome = {
      // 其他配置项...
      startTimeout: 30000 // 设置为30秒,根据实际情况调整
    };
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:40:19