使用Selenium时Chrome启动后立即崩溃的问题求助
解决Selenium启动Chrome后立即崩溃的问题
我之前也碰到过一模一样的情况!排除了实例过多和chromedriver与Chrome版本不匹配这两个常见原因后,你可以试试下面这些排查方向:
检查无头模式配置:如果是在无图形界面的环境(比如服务器、CI/CD)运行,没正确配置无头模式很容易导致崩溃。现在Chrome推荐用新的无头模式参数,试试这么写:
const { Builder } = require('selenium-webdriver'); const chrome = require('selenium-webdriver/chrome'); const chromeOptions = new chrome.Options(); chromeOptions.addArguments('--headless=new'); // 新版无头模式,替代旧的--headless chromeOptions.addArguments('--disable-gpu'); // 部分环境需要这个参数避免渲染问题 chromeOptions.addArguments('--window-size=1920,1080'); // 可选,指定窗口尺寸 const driver = await new Builder() .forBrowser('chrome') .setChromeOptions(chromeOptions) .build();避免用户数据目录冲突:Chrome默认的用户数据目录可能有缓存或权限问题,试试指定一个临时的干净目录:
chromeOptions.addArguments('--user-data-dir=/tmp/chrome-test-temp'); // 临时目录路径可自定义 chromeOptions.addArguments('--no-sandbox'); // Linux环境下非root用户运行时常用,避免沙箱权限问题处理未捕获的Promise拒绝:你看到的
UnhandledPromiseRejectionWarning提示很关键——这说明代码里的Promise没有被正确捕获异常,可能掩盖了真正的崩溃原因。给所有异步操作加上try/catch,确保能拿到完整错误信息:let driver; try { driver = await new Builder().forBrowser('chrome').setChromeOptions(chromeOptions).build(); // 你的单元测试逻辑 await driver.get('https://your-test-url.com'); // ...其他操作 } catch (error) { console.error('测试崩溃详情:', error); // 这里会打印真正的错误原因 } finally { // 确保无论成功失败都关闭driver,避免残留实例 if (driver) await driver.quit(); }禁用扩展和插件:Chrome安装的第三方扩展可能干扰Selenium的正常运行,启动时禁用所有扩展试试:
chromeOptions.addArguments('--disable-extensions'); chromeOptions.addArguments('--disable-plugins');检查系统资源:如果是批量运行测试,系统内存不足也可能导致Chrome启动即崩溃,可以查看系统的内存占用情况,必要时减少并行测试的数量。
内容的提问来源于stack exchange,提问作者Phil
相关产品推荐
相关产品推荐

