在测试运行时期间,Poltergeist切换代理

时间:2013-02-26 08:49:52

标签: rspec phantomjs headless poltergeist

我们只是从capybara-webkit迁移到Poltergeist。以前我们使用capybara-webkit和puffing billy,你可以在这里看到:

def use_proxy_with_vcr cassettes_name = nil, cassettes_options = {}
  page.driver.browser.set_proxy(:host => Billy.proxy.host, :port => Billy.proxy.port)
  page.driver.browser.ignore_ssl_errors
  Billy.proxy.strategy.use_cassette cassettes_name, cassettes_options
  yield
  Billy.proxy.strategy.reset
  page.driver.browser.clear_proxy
end

这发生在运行时和我想用Poltergeist做同样的事情。我意识到可以通过使用phantomjs_options(https://github.com/jonleighton/poltergeist#customization)通过capybara驱动程序设置传递CLI选项来设置代理并忽略ssl错误。

是否可以在运行时启用/禁用代理和ssl错误?如果是的话怎么样?

1 个答案:

答案 0 :(得分:4)

在运行期间通过poltergeist无法禁用/启用phantomjs选项(虽然IIRC一般可以这样做,因此可以将该功能添加到poltergeist中)。

我认为实现这一目标的最简单方法是注册一个新的Capybara驱动程序。 E.g。

Capybara.register_driver :proxied_poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, phantomjs_options: [...])
end

然后,您可以通过设置Capybara.current_driver = :proxied_poltergeist来使用适用的驱动程序。这将使用您指定的CLI选项启动单独的phantomjs实例。