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

Nightwatch测试中点击浏览器窗口即关闭崩溃问题求助

解决Nightwatch测试中点击Chrome窗口导致浏览器崩溃的问题

针对你在Windows 10上遇到的这个棘手问题——只要左键/右键点击Nightwatch启动的Chrome窗口,浏览器就立刻关闭并抛出chrome not reachable错误,而Ubuntu上完全正常的情况,我整理了几个经过验证的解决方案,你可以逐一尝试:

1. 先禁用测试并行执行试试

你的配置里开启了4个并行测试进程,虽然并行能提升效率,但Windows系统上有时候多个Chrome实例的资源竞争会触发一些奇怪的会话终止行为。先把并行关掉测试看看:
修改你的Nightwatch配置文件中的test_workers部分:

"test_workers": {
  "enabled": false
}

保存后重新运行测试,点击Chrome窗口看看是否还会触发关闭。如果没问题,说明并行执行是诱因,后续可以尝试调整worker数量为1,或者排查并行模式下的资源冲突问题。

2. 调整ChromeOptions参数,修复兼容性问题

你当前配置里的w3c: false可能和新版Chrome/ChromeDriver不兼容,加上几个常用的稳定性参数试试:
更新desiredCapabilities里的chromeOptions:

"desiredCapabilities": {
  "browserName": "chrome",
  "chromeOptions": {
    "w3c": true,
    "args": [
      "--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36; Nightwatch",
      "window-size=1056,772",
      "--no-sandbox",
      "--disable-dev-shm-usage"
    ]
  }
}

--no-sandbox和--disable-dev-shm-usage主要是解决权限和内存限制问题,虽然更多用于Linux,但Windows环境下偶尔也能解决这类异常关闭的情况;开启W3C模式则能让ChromeDriver和浏览器的通信更规范。

3. 严格匹配Chrome和ChromeDriver版本

虽然你说已经升级到最新版,但一定要确认ChromeDriver的版本和你本地安装的Chrome版本完全一致——比如Chrome是114.0.5735.198,ChromeDriver也必须是114.x的对应版本,哪怕差一个小版本都可能出现兼容性问题。你可以重新下载和当前Chrome版本完全匹配的ChromeDriver,替换掉bin/chromedriver.exe再测试。

4. 绕过Selenium Server,直接用ChromeDriver启动

你当前是通过Selenium Server间接启动ChromeDriver,试试直接让Nightwatch调用ChromeDriver,减少中间层可能的问题:
注释掉配置里的selenium块,然后在test_settings.default里添加webdriver配置:

"test_settings": {
  "default": {
    "launch_url": "http://localhost",
    "silent": true,
    "screenshots": {
      "enabled": true,
      "on_failure": false,
      "on_error": false,
      "path": ""
    },
    "desiredCapabilities": {
      "browserName": "chrome",
      "chromeOptions": {
        "w3c": true,
        "args": [
          "--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36; Nightwatch",
          "window-size=1056,772"
        ]
      }
    },
    "webdriver": {
      "start_process": true,
      "server_path": "bin/chromedriver.exe"
    }
  }
}

这样Nightwatch会直接启动ChromeDriver,跳过Selenium Server,很多时候能解决这类异常会话终止的问题。

5. 排查日志找更详细的错误信息

如果上面的方法都没用,建议开启更详细的日志来定位问题:

  • 在ChromeOptions里添加--enable-logging --v=1参数,让Chrome输出详细日志到控制台
  • 查看Selenium日志目录seleniumLog里的文件,看看浏览器关闭前后有没有异常记录

这些日志能帮你找到更具体的触发原因,比如是某个权限问题、扩展冲突还是会话通信错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:45:45