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

Docker环境下Rails+Capybara连接Selenium Chrome失败求助

问题解决:Docker Compose下Capybara连接Selenium Chrome失败

核心问题分析

报错net::ERR_CONNECTION_REFUSED的本质是:Selenium Chrome容器内的浏览器无法访问Rails应用容器的服务。你设置的Capybara.app_host = "http://#{@company.subdomain}.lvh.me:5000"在Docker内部网络中无效——lvh.me指向宿主机,Chrome容器无法通过该地址访问Rails容器;同时Capybara配置存在多处冲突。

分步修复

1. 修正Docker网络与应用访问地址

Docker内部容器通过服务名互相访问,需调整app_host为Docker内部可识别的地址,同时处理子域名限制:

  • 在测试的setup方法中,将app_host改为http://#{@company.subdomain}.web:5000(web是你docker-compose.yml中定义的Rails服务名)
  • 在config/environments/test.rb中添加域名白名单,允许子域名访问:
config.hosts << /.*\.web/

2. 修复Capybara配置冲突

test_helper.rb存在3处关键错误,修正后关键代码如下:

class ActionDispatch::IntegrationTest
  include Capybara::DSL
  include Capybara::Minitest::Assertions
  config.include Rails.application.routes.url_helpers
  
  Capybara.default_max_wait_time = 10
  Capybara.run_server = true # 改为true,让Capybara启动测试服务器
  Capybara.default_driver = :selenium_chrome_in_container
  Capybara.javascript_driver = :selenium_chrome_in_container # 匹配注册的容器专用驱动
  Capybara.always_include_port = true
  Capybara.server_host = "0.0.0.0" # 让服务器监听所有接口,允许容器间访问
  Capybara.server_port = 5000

  # 保留原有驱动注册代码...
end
  • 移除测试setup中重复设置的server_host和server_port,统一在test_helper.rb配置。

3. 优化Selenium Chrome容器配置(可选)

在docker-compose.yml的selenium_chrome服务中添加环境变量,确保ChromeDriver允许任意IP连接:

selenium_chrome:
  image: selenium/standalone-chrome
  privileged: true
  ports:
    - "5900:5900"
    - "4444:4444"
    - "7900:7900"
  environment:
    - SE_NODE_MAX_SESSIONS=10
    - SE_NODE_OVERRIDE_MAX_SESSIONS=true
    - SE_CHROME_DRIVER_ARGS=--allowed-ips=*

4. 调整测试代码

修正hello_world_capybara_test.rb的setup部分:

setup do
  @company = create(:company)
  @mailing = create(:user)
  # 使用Docker内部服务名+子域名
  Capybara.app_host = "http://#{@company.subdomain}.web:5000"
end

验证步骤

  1. 重启所有Docker容器:docker-compose down && docker-compose up --build
  2. 在web容器内执行测试:bundle exec rake test

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:46:05