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

WebMock拦截Selenium删除会话请求问题求助

系统环境

  • Ruby v2.6
  • WebMock gem v3.18.1
  • Selenium Webdriver gem v4.1.0
  • RSpec gem v3.11.0
  • Capybara gem v3.36.0

问题概述

在GitLab CI上运行测试套件时,所有测试均通过,但WebMock拦截了Capybara的Selenium驱动发起的删除会话请求。

743个测试用例,0失败,30个待定
/builds/abelsoninfo/aws/pips/pips-console/vendor/ruby/ruby/2.6.0/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/net_http.rb:104:in
`request': Real HTTP connections are disabled. Unregistered request:
DELETE
http://selenium__standalone-chrome:4444/wd/hub/session/0146cfc5158d585f445cfcdbda289733

错误出现在测试运行完成后,但RSpec输出出现换行,怀疑错误实际发生在测试执行期间。

已在spec/support/capybara.rb中配置允许包含selenium或session的URL连接:

selenium_session_requests = %r{/((__.+__)|(hub/session.*))$}
allowed_connections = [
  '0.0.0.0', '127.0.0.1', 'https://chromedriver.storage.googleapis.com',
  'localhost', /selenium/, selenium_session_requests
].freeze

RSpec.configure do |config|
  config.before(:suite) do
    WebMock.enable!
  end

  config.after(:suite) do
    WebMock.disable!
  end

  Capybara.app_host = "http://#{Capybara.server_host}:#{Capybara.server_port}"

  Capybara.javascript_driver = ENV.fetch('CAPYBARA_JAVASCRIPT_DRIVER', :chrome_headless).to_sym

  WebMock.disable_net_connect!(allow: allowed_connections, net_http_connect_on_start: allowed_connections)
end

曾在before(:suite)块中确认,类似http://selenium__standalone-chrome:4444/wd/hub/session/0146cfc5158d585f445cfcdbda289733的会话URL会被WebMock允许。按照提示尝试stub该请求(本无需此操作),但仍出现相同错误。

当前现象

WebMock阻止Selenium驱动关闭浏览器。

期望结果

浏览器正常关闭,无错误抛出。

GitLab CI配置

在.gitlab-ci.yml中配置了Selenium的Docker服务:

image: ruby:2.6
  services:
    - postgres:10.1
    - selenium/standalone-chrome:latest
    - redis:latest

该服务的URL通过环境变量暴露给测试:

- export SELENIUM_REMOTE_URL="http://selenium__standalone-chrome:4444/wd/hub"

完整错误输出

/builds/abelsoninfo/aws/pips/pips-console/vendor/ruby/ruby/2.6.0/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/net_http.rb:104:in
request': Real HTTP connections are disabled. Unregistered request: DELETE http://selenium__standalone-chrome:4444/wd/hub/session/0146cfc5158d585f445cfcdbda289733 with headers {'Accept'=>'application/json', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/json; charset=UTF-8', 'User-Agent'=>'selenium/4.1.0 (ruby linux)'} (WebMock::NetConnectNotAllowedError) You can stub this request with the following snippet: stub_request(:delete, "http://selenium__standalone-chrome:4444/wd/hub/session/0146cfc5158d585f445cfcdbda289733"). with( headers: { 'Accept'=>'application/json', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/json; charset=UTF-8', 'User-Agent'=>'selenium/4.1.0 (ruby linux)' }). to_return(status: 200, body: "", headers: {}) ============================================================ from /builds/abelsoninfo/aws/pips/pips-console/vendor/ruby/ruby/2.6.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/remote/http/default.rb:124:in response_for' from
/builds/abelsoninfo/aws/pips/pips-console/vendor/ruby/ruby/2.6.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/remote/http/default.rb:77:in
request' from /builds/abelsoninfo/aws/pips/pips-console/vendor/ruby/ruby/2.6.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/remote/http/common.rb:59:in call' from
/builds/abelsoninfo/aws/pips/pips-console/vendor/ruby/ruby/2.6.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/remote/bridge.rb:588:in
execute' from /builds/abelsoninfo/aws/pips/pips-console/vendor/ruby/ruby/2.6.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/remote/bridge.rb:188:in quit' from
/builds/abelsoninfo/aws/pips/pips-console/vendor/ruby/ruby/2.6.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:181:in
quit' from /builds/abelsoninfo/aws/pips/pips-console/vendor/ruby/ruby/2.6.0/gems/capybara-3.36.0/lib/capybara/selenium/driver.rb:293:in quit' from
/builds/abelsoninfo/aws/pips/pips-console/vendor/ruby/ruby/2.6.0/gems/capybara-3.36.0/lib/capybara/selenium/driver.rb:512:in
`block in setup_exit_handler'


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:45:41