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
相关产品推荐
相关产品推荐

