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

ChromeDriver 138等待URL变更时崩溃/出现ECONNRESET错误

问题:Bitbucket Docker环境中Nightwatch测试遇302重定向时ECONNRESET错误

环境与依赖配置

运行环境为Bitbucket Docker容器,使用Chrome 138+无头浏览器、Chromedriver 138,测试框架为Nightwatch。项目依赖配置如下:

"devDependencies": {
    "@percy/cli": "^1.31.0",
    "@percy/nightwatch": "^2.2.0",
    "chromedriver": "^131.0.5",
    "geckodriver": "^5.0.0",
    "nightwatch": "^3.12.2"
},
"dependencies": {
    "axios": "^1.10.0",
    "uuid": "^11.1.0"
}

问题现象

测试执行到302重定向导致URL变更环节时崩溃,此前页面加载、字段填充、按钮点击等步骤均正常。开启chromedriver verbose模式后,日志显示连接重置错误:

[1751893650.181][DEBUG]: DevTools WebSocket Event: Page.frameScheduledNavigation (session_id=7F4CAC6350069520ADC60D2DB0881989) 2A5C386698EB267F4B7D0F358B0872B7 {    "delay": 0,    "frameId": "2A5C386698EB267F4B7D0F358B0872B7",    "reason": "formSubmissionPost", "url": "https://xxxMYURLxxx" }
[1751893650.181][DEBUG]: DevTools WebSocket Event: Page.frameStartedNavigating (session_id=7F4CAC6350069520ADC60D2DB0881989) 2A5C386698EB267F4B7D0F358B0872B7 {    "frameId": "2A5C386698EB267F4B7D0F358B0872B7",    "loaderId": "2226A713831D06C96DF1D81B9C6A85FD",    "navigationType": "differentDocument",    "url": "https://xxxMYURLxxx" }
[1751893650.182][DEBUG]: DevTools WebSocket Event: Page.frameStartedLoading (session_id=7F4CAC6350069520ADC60D2DB0881989) 2A5C386698EB267F4B7D0F358B0872B7 {    "frameId": "2A5C386698EB267F4B7D0F358B0872B7" }
[1751893650.182][DEBUG]: DevTools WebSocket Event: Page.frameClearedScheduledNavigation (session_id=7F4CAC6350069520ADC60D2DB0881989) 2A5C386698EB267F4B7D0F358B0872B7 {    "frameId": "2A5C386698EB267F4B7D0F358B0872B7" }
[546:577:0707/130733.224732:ERROR:google_apis/gcm/engine/registration_request.cc:291]
Registration response error message: DEPRECATED_ENDPOINT   Error
          GET  /session/17f469c0594a7fa8bb56155128c3be53/url - ECONNRESET Error: socket hang up
        at Socket.socketCloseListener (node:_http_client:491:27)
        at Socket.emit (node:events:530:35)
        at Socket.emit (node:domain:489:12)
        at TCP.<anonymous> (node:net:346:12)
[546:577:0707/130815.012637:ERROR:google_apis/gcm/engine/registration_request.cc:291]
Registration response error message: DEPRECATED_ENDPOINT   Error
          GET  /session/17f469c0594a7fa8bb56155128c3be53/url - ECONNRESET Error: socket hang up
        at Socket.socketCloseListener (node:_http_client:491:27)
        at Socket.emit (node:events:530:35)
        at Socket.emit (node:domain:489:12)
        at TCP.<anonymous> (node:net:346:12)   Error
          GET  /session/17f469c0594a7fa8bb56155128c3be53/url - ECONNRESET Error: socket hang up
        at Socket.socketCloseListener (node:_http_client:491:27)
        at Socket.emit (node:events:530:35)
        at Socket.emit (node:domain:489:12)
        at TCP.<anonymous> (node:net:346:12)
        Error   Error while running .getCurrentUrl() protocol action: ECONNRESET socket hang up
        Error   Error while running .url(): Error: ECONNRESET socket hang up

已尝试的Chrome启动参数

已添加以下启动参数,但问题未解决:

args: [
  '--headless=new',
  '--no-sandbox',
  '--disable-dev-shm-usage',
  '--disable-background-networking',
  '--disable-default-apps',
  '--disable-sync',
  '--metrics-recording-only',
  '--disable-component-update',
  '--disable-background-timer-throttling',
  '--disable-client-side-phishing-detection',
  '--disable-popup-blocking',
  '--disable-prompt-on-repost',
  '--disable-renderer-backgrounding',
  '--disable-notifications',
  '--disable-extensions',
  '--disable-component-extensions-with-background-pages'
]

解决方案建议

1. 对齐Chromedriver与Chrome版本

当前依赖中Chromedriver版本为131.0.5,与使用的Chrome 138不匹配,Chrome与Chromedriver版本必须严格对应。执行以下命令升级:

npm install chromedriver@138 --save-dev

2. 调整Chrome启动参数

添加网络稳定性相关参数,修改后的启动参数如下:

args: [
  '--headless=new',
  '--no-sandbox',
  '--disable-dev-shm-usage',
  '--enable-features=NetworkService,NetworkServiceInProcess', // 修复网络连接问题
  '--remote-debugging-port=9222', // 稳定调试端口
  '--disable-features=site-per-process', // 避免进程隔离导致连接断开
  '--disable-gcm', // 禁用GCM服务消除日志干扰
  '--disable-background-networking',
  '--disable-default-apps',
  '--disable-sync',
  '--metrics-recording-only',
  '--disable-component-update',
  '--disable-background-timer-throttling',
  '--disable-client-side-phishing-detection',
  '--disable-popup-blocking',
  '--disable-prompt-on-repost',
  '--disable-renderer-backgrounding',
  '--disable-notifications',
  '--disable-extensions',
  '--disable-component-extensions-with-background-pages'
]

3. 优化测试等待逻辑

在重定向操作后添加显式等待,避免立即调用getCurrentUrl()导致连接未建立:

// 提交触发重定向的操作后,等待页面URL变更
browser.waitUntil(function() {
  return browser.getCurrentUrl().then(function(currentUrl) {
    // 替换为目标重定向URL的特征字符串
    return currentUrl.includes('目标页面路径标识');
  });
}, 10000, '重定向超时,未检测到目标URL');

4. 优化Docker容器配置

在Bitbucket的Docker运行命令中增加资源配置,提升稳定性:

  • 共享内存调整:--shm-size=2g(比--disable-dev-shm-usage更稳定)
  • 确保容器分配足够CPU资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:14:52