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

Docker-compose运行Selenium测试出现net::ERR_CONNECTION_REFUSED错误

问题根因

net::ERR_CONNECTION_REFUSED 报错是因为Selenium Chrome容器内的浏览器尝试访问测试页面时,无法连通Capybara自动启动的Rails测试服务器:

  1. Capybara默认将测试服务器绑定在127.0.0.1,只有web容器自身可以访问,同Docker网络内的Selenium容器无法访问
  2. rails_helper.rb 中配置的Capybara.asset_host = 'http://localhost:3000'指向的是Chrome容器自身的3000端口,而非web容器的服务地址

解决方案

1. 修改rails_helper.rb配置

找到Capybara相关配置段,调整如下:

# 在原有Capybara配置基础上添加/修改以下参数
# 让测试服务器绑定到0.0.0.0,允许同Docker网络的其他容器访问
Capybara.server_host = '0.0.0.0'
# 配置Selenium访问测试服务的地址为web容器的服务名(Docker内置DNS可直接解析)
Capybara.app_host = 'http://web'
Capybara.always_include_port = true
# 删除原有 Capybara.asset_host = 'http://localhost:3000' 配置,该参数会干扰访问路径

2. 调整测试执行流程

执行测试前先启动所有依赖服务,确保Selenium相关组件正常运行:

# 启动后台依赖服务
docker-compose up -d db selenium-hub chrome
# 执行测试命令
docker-compose run web bundle exec rspec

可选兼容配置

如果调整后仍存在域名解析问题,可以在docker-compose.yml的web服务段添加显式hostname配置:

web:
  build: .
  hostname: web
  # 其余原有配置保持不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:09:04