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

Selenium Grid Chrome节点跳转第二个URL报Connection refused错误求助

问题根源

从报错日志和配置信息来看,问题由三个核心原因导致:

  1. 你使用的Selenium Grid 4.0 RC2是2021年的预览版本,存在Chrome节点会话端口注册错误的已知BUG,会导致Hub调用节点时错误使用localhost地址请求ChromeDriver端口,触发连接拒绝。
  2. Chrome配置中添加的--disable-background-networking参数会禁用Chrome内部通信的后台网络线程,会话建立后该参数生效,会中断ChromeDriver与Chrome的通信连接,导致第二次页面跳转请求无法被处理。
  3. 会话超时时间设置过短,SE_NODE_SESSION_TIMEOUT=10意味着会话空闲超过10秒就会被节点销毁,登录操作的等待时间很容易触发该阈值,导致ChromeDriver提前退出。

解决方案

1. 修正docker-compose配置

更新配置如下,所有镜像替换为稳定版,调整超时参数,添加节点主机注册配置:

version: "3"
services:
  chrome:
    image: selenium/node-chrome:4.8.3
    shm_size: 2gb
    volumes:
      - /dev/shm:/dev/shm
    environment:
      SE_EVENT_BUS_HOST: selenium-hub
      SE_EVENT_BUS_PUBLISH_PORT: 4442
      SE_EVENT_BUS_SUBSCRIBE_PORT: 4443
      SE_NODE_SESSION_TIMEOUT: 300 # 调整为5分钟空闲超时
      SE_SESSION_REQUEST_TIMEOUT: 60
      SE_NODE_HOST: chrome # 明确节点注册地址,避免用localhost
      JAVA_OPTS: -Dwebdriver.chrome.whitelistedIps=
      START_XVFB: false
    ports:
      - "6900:5900"
  firefox:
    image: selenium/node-firefox:4.8.3
    shm_size: 2gb
    volumes:
      - /dev/shm:/dev/shm
    environment:
      SE_EVENT_BUS_HOST: selenium-hub
      SE_EVENT_BUS_PUBLISH_PORT: 4442
      SE_EVENT_BUS_SUBSCRIBE_PORT: 4443
      SE_NODE_SESSION_TIMEOUT: 300
      SE_SESSION_REQUEST_TIMEOUT: 60
      START_XVFB: false
    ports:
      - "6901:5900"
  edge:
    image: selenium/node-edge:4.8.3
    shm_size: 2gb
    volumes:
      - /dev/shm:/dev/shm
    environment:
      SE_EVENT_BUS_HOST: selenium-hub
      SE_EVENT_BUS_PUBLISH_PORT: 4442
      SE_EVENT_BUS_SUBSCRIBE_PORT: 4443
      SE_NODE_SESSION_TIMEOUT: 300
      SE_SESSION_REQUEST_TIMEOUT: 60
      START_XVFB: false
    ports:
      - "6902:5900"
  selenium-hub:
    image: selenium/hub:4.8.3
    container_name: selenium-hub
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"
    depends_on:
      - chrome
      - edge
      - firefox

修改后执行docker-compose up -d重启所有服务。

2. 修正ChromeOptions配置

删除导致通信中断的参数,修正重复配置的下载扩展名规则:

WebDriverManager.chromedriver().setup();

// chrome browser prefrences
HashMap<String, Object> prefs = new HashMap<>();
prefs.put("profile.default_content_settings.popups", 0);
prefs.put("download.prompt_for_download", false);
prefs.put("safebrowsing.enabled", false);
// 合并重复的扩展名配置,避免后续值覆盖前面的配置
prefs.put("download.extensions_to_open", "application/xml,application/csv,application/pdf,application/zip");

// set chrome options
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("prefs", prefs);
chromeOptions.addArguments("--start-fullscreen");
chromeOptions.addArguments("--safebrowsing-disable-download-protection");
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("--disable-gpu");
chromeOptions.addArguments ("--disable-setuid-sandbox");
chromeOptions.addArguments ("--no-first-run");
chromeOptions.addArguments ("--safebrowsing-disable-auto-update"); // 删除参数末尾多余空格
// 移除--disable-background-networking参数,避免中断Chrome与ChromeDriver的通信
chromeOptions.addArguments("--headless", "--enable-logging", "--window-size=1920x1080");

// start remote session
driver = new RemoteWebDriver(new URL("http://localhost:4444/"),chromeOptions);

3. 验证排查

如果修改后仍然有问题,可以临时关闭Chrome的无头模式,通过VNC连接EC2的6900端口查看Chrome运行状态,确认跳转时是否发生浏览器崩溃,同时检查EC2的安全组是否开放了节点之间的通信端口。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:27:01