保留测试套件原有的驱动,另外注册一个用于代理路由的 Chrome 驱动:

Capybara.register_driver :chrome_via_proxy do |app|
  options = Selenium::WebDriver::Chrome::Options.new
  options.add_argument('--proxy-server=http://proxy.example:8080')
  Capybara::Selenium::Driver.new(
    app, browser: :chrome, options: options
  )
end

在需要走该路由的工作周围选用它:

Capybara.using_driver(:chrome_via_proxy) do
  visit 'https://www.example.com/'
end

RSpec 也可以通过 driver 元数据选用已注册的驱动;请沿用测试套件现有的集成方式。代理设置是一个浏览器创建参数,因此注册这个驱动不会修改已经在另一个驱动下运行的浏览器。切换驱动同样不会转移该浏览器的 cookie 或已打开的连接。

该示例使用未认证的 HTTP 代理,公开候选见HTTP 代理列表。认证代理需要浏览器支持的身份认证方案。如果测试浏览器必须直接访问本地应用,请在浏览器支持的绕过配置中设置所需的例外。

对于远程浏览器,请从该浏览器所在机器上分别评估代理与应用的连通性。

相关文章