如何配置Capybara以便浏览器将所有请求发送到localhost?

时间:2015-08-28 23:33:53

标签: ruby-on-rails google-chrome firefox selenium-webdriver capybara

为了测试,我不希望浏览器与任何外部服务通信。如果将所有外部请求发送到localhost而不是外部服务,我可以模拟它们。

Capybara有没有办法启动浏览器,以便代理对localhost的所有请求?

2 个答案:

答案 0 :(得分:1)

不是直接的,但您可以尝试puffing-billy。它设置了一个代理来捕获浏览器请求并允许您存根它们:

proxy.stub('http://example.com/json/').and_return(:json => { :foo => 'bar' })

答案 1 :(得分:0)

浏览器不喜欢来自安全请求的响应,但不是这样。

在spec目录中创建一个firefox_profile目录。

使用以下命令在firefox_profile中创建times.json文件:

{
  "created": 1441059879941
}

然后更新spec_helper

Capybara.register_driver :selenium do |app|
      profile = Selenium::WebDriver::Firefox::Profile.new('spec/firefox_profile')

      profile["network.proxy.type"] = 1
      profile["network.proxy.http"] = 'localhost'
      profile["network.proxy.http_port"] = 3000
      profile["network.proxy.ssl"]  = "proxy.domain.example.com"
      profile["network.proxy.ssl_port"] = 3000

      Capybara::Selenium::Driver.new(app, browser: :firefox, profile: profile)
    end