Необязательный параметр хеширования в классе Ruby - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь настроить драйвер с Capybara, где хэш опций используется только через переменную окружения.

Capybara.register_driver :chrome do |app|
opts = Selenium::WebDriver::Chrome::Options.new
opts.add_argument '--start-maximized'
opts.add_argument '--disable-infobars'
opts.add_argument '--headless' if ENV['headless']
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy, browserName: 'chrome' if ENV['extra_args])
Capybara::Selenium::Driver.new(
    app,
    browser: :chrome,
    options: opts,
    desired_capabilities: caps
)
  end

  Capybara.app_host = location
  Capybara.default_driver = :chrome
end

Это строка, над которой я работаю:

caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy, browserName: 'chrome' if ENV['extra_args])

Я знаю, что это неправильный синтаксис, но есть ли способ, которым я могу достичь того, что я пытаюсь сделать здесь? browserName нужно вызывать, только если установлено ENV[extra_args'].

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Вы можете установить любую из Capabilities клавиш через #[]=, с ключом в случае змеи, так что

...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps['browser_name'] = 'chrome' if ENV['extra_args']
...

будет работать, но есть метод browser_name= для Capabilities, поэтому

...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps.browser_name = 'chrome' if ENV['extra_args']
...

вероятно, имеет больше смысла

0 голосов
/ 19 ноября 2018

Вы можете сделать следующее:

options = {accept_insecure_certs: true, proxy: proxy}
options.merge!({browserName: 'chrome'}) if ENV['extra_args]
caps = Selenium::WebDriver::Remote::Capabilities.new(options)

Дайте мне знать, если это поможет!

...