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

同一代码块多次调用Capybara visit触发ERR_CONNECTION_REFUSED错误求助

解决Capybara+Selenium循环访问404后连接被拒绝的问题

核心原因

测试环境下Rails默认会直接抛出ActiveRecord::RecordNotFound异常,而非渲染404页面。当第一次请求触发该异常时,服务器进程可能因未捕获的异常中断连接,导致后续的visit请求无法建立连接,抛出ERR_CONNECTION_REFUSED错误。

解决方案

1. 配置测试环境渲染404页面

在config/environments/test.rb中调整配置,让Rails在测试环境中渲染错误页面而非抛出异常:

# 开启异常页面渲染
config.action_dispatch.show_exceptions = true

# 映射RecordNotFound到404响应
config.action_dispatch.rescue_responses = {
  'ActiveRecord::RecordNotFound' => :not_found
}

2. 重置Capybara会话(可选)

如果调整配置后仍有问题,可在循环内每次请求前重置Capybara会话,清除之前的请求状态:

it do
  array.each do |elem|
    reset_session!
    visit some_path(elem)
    expect(page).to have_text(/RecordNotFound/i)
  end
end

3. 检查浏览器驱动版本

确保你的Selenium浏览器驱动(如ChromeDriver、GeckoDriver)版本与本地安装的浏览器版本匹配,版本不兼容也可能导致连接异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:09:50