Можно ли установить Selenium :: Driver :: Proxy после инициализации - PullRequest
0 голосов
/ 05 июля 2018

В настоящее время я использую Capybara и Chromedriver для запуска функциональных тестов в нашем приложении Rails. На данный момент я вижу, что при инициализации драйвера можно установить прокси с помощью аргументов.

    Capybara.register_driver :selenium_chrome do |app|
      Capybara::Selenium::Driver.new(
        app,
        browser: :chrome,
        args: [
          '--window-size=1240,1400',
          "--proxy-server=#{s.url}",
          '--proxy-bypass-list=127.0.0.1'
        ]
      )
    end

Однако я хочу, чтобы только определенные тесты проксировали определенный порт, потому что я также использую Capybara :: Discoball для загрузки приложения Sinatra в качестве приложения, к которому я передаю внешние запросы. Поэтому мне нужно иметь возможность сменить прокси-сервер после его инициализации на порт загруженного в данный момент приложения Sinatra. Возможно ли это после инициализации?

1 Ответ

0 голосов
/ 05 июля 2018

Нет, но вы можете зарегистрировать другой драйвер под другим именем, а затем указать, чтобы использовать его для тестов, которые требуют его. Предполагая, что вы используете конфигурацию rspec по умолчанию для capybara, которая будет выглядеть примерно так:

Capybara.register_driver :selenium_chrome do |app|
  # register the driver without proxy here
end

Capybara.register_driver :selenium_chrome_proxy do |app|
  # register the driver with proxy config here
end

Capybara.javascript_driver = :selenium_chrome # register default JS driver

it "does something that doesn't need proxy", js: true do
   # test that doesn't use the proxy config
end

it "does something that needs proxy", driver: :selenium_chrome_proxy do
  # test that uses proxy
end
...