Ruby class 中的可选哈希选项
Optional hash option in Ruby class
我正在尝试使用 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']
时才需要调用。
您可以执行以下操作:
options = {accept_insecure_certs: true, proxy: proxy}
options.merge!({browserName: 'chrome'}) if ENV['extra_args]
caps = Selenium::WebDriver::Remote::Capabilities.new(options)
如果有帮助请告诉我!
您可以通过 #[]=
设置任何 Capabilities
键,使用蛇形键
...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps['browser_name'] = 'chrome' if ENV['extra_args']
...
可以,但是 Capabilities
上还有一个 browser_name=
方法,所以
...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps.browser_name = 'chrome' if ENV['extra_args']
...
可能更有意义
我正在尝试使用 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']
时才需要调用。
您可以执行以下操作:
options = {accept_insecure_certs: true, proxy: proxy}
options.merge!({browserName: 'chrome'}) if ENV['extra_args]
caps = Selenium::WebDriver::Remote::Capabilities.new(options)
如果有帮助请告诉我!
您可以通过 #[]=
设置任何 Capabilities
键,使用蛇形键
...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps['browser_name'] = 'chrome' if ENV['extra_args']
...
可以,但是 Capabilities
上还有一个 browser_name=
方法,所以
...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps.browser_name = 'chrome' if ENV['extra_args']
...
可能更有意义