Optional hash option in Ruby class
I'm trying to configure a driver with Capybara where an options hash is only used via an environment variable.
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
This is the line I'm working on:
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy, browserName: 'chrome' if ENV['extra_args])
I know this is invalid syntax but is there a way I can achieve what it is I am trying to do here? browserName needs to only be invoked if the ENV[extra_args'] is set.
ruby cucumber capybara
add a comment |
I'm trying to configure a driver with Capybara where an options hash is only used via an environment variable.
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
This is the line I'm working on:
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy, browserName: 'chrome' if ENV['extra_args])
I know this is invalid syntax but is there a way I can achieve what it is I am trying to do here? browserName needs to only be invoked if the ENV[extra_args'] is set.
ruby cucumber capybara
add a comment |
I'm trying to configure a driver with Capybara where an options hash is only used via an environment variable.
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
This is the line I'm working on:
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy, browserName: 'chrome' if ENV['extra_args])
I know this is invalid syntax but is there a way I can achieve what it is I am trying to do here? browserName needs to only be invoked if the ENV[extra_args'] is set.
ruby cucumber capybara
I'm trying to configure a driver with Capybara where an options hash is only used via an environment variable.
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
This is the line I'm working on:
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy, browserName: 'chrome' if ENV['extra_args])
I know this is invalid syntax but is there a way I can achieve what it is I am trying to do here? browserName needs to only be invoked if the ENV[extra_args'] is set.
ruby cucumber capybara
ruby cucumber capybara
asked Nov 19 '18 at 9:51
TomTom
3671419
3671419
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
You can set any of the Capabilities keys via #=, with the key in snake case so
...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps['browser_name'] = 'chrome' if ENV['extra_args']
...
would work but there's also a browser_name= method on Capabilities so
...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps.browser_name = 'chrome' if ENV['extra_args']
...
probably makes more sense
This works perfectly, thank you
– Tom
Nov 19 '18 at 13:19
add a comment |
You can do following:
options = {accept_insecure_certs: true, proxy: proxy}
options.merge!({browserName: 'chrome'}) if ENV['extra_args]
caps = Selenium::WebDriver::Remote::Capabilities.new(options)
Let me know if it helps!
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53372034%2foptional-hash-option-in-ruby-class%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can set any of the Capabilities keys via #=, with the key in snake case so
...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps['browser_name'] = 'chrome' if ENV['extra_args']
...
would work but there's also a browser_name= method on Capabilities so
...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps.browser_name = 'chrome' if ENV['extra_args']
...
probably makes more sense
This works perfectly, thank you
– Tom
Nov 19 '18 at 13:19
add a comment |
You can set any of the Capabilities keys via #=, with the key in snake case so
...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps['browser_name'] = 'chrome' if ENV['extra_args']
...
would work but there's also a browser_name= method on Capabilities so
...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps.browser_name = 'chrome' if ENV['extra_args']
...
probably makes more sense
This works perfectly, thank you
– Tom
Nov 19 '18 at 13:19
add a comment |
You can set any of the Capabilities keys via #=, with the key in snake case so
...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps['browser_name'] = 'chrome' if ENV['extra_args']
...
would work but there's also a browser_name= method on Capabilities so
...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps.browser_name = 'chrome' if ENV['extra_args']
...
probably makes more sense
You can set any of the Capabilities keys via #=, with the key in snake case so
...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps['browser_name'] = 'chrome' if ENV['extra_args']
...
would work but there's also a browser_name= method on Capabilities so
...
caps = Selenium::WebDriver::Remote::Capabilities.new(accept_insecure_certs: true, proxy: proxy)
caps.browser_name = 'chrome' if ENV['extra_args']
...
probably makes more sense
answered Nov 19 '18 at 11:21
Thomas WalpoleThomas Walpole
30.9k32950
30.9k32950
This works perfectly, thank you
– Tom
Nov 19 '18 at 13:19
add a comment |
This works perfectly, thank you
– Tom
Nov 19 '18 at 13:19
This works perfectly, thank you
– Tom
Nov 19 '18 at 13:19
This works perfectly, thank you
– Tom
Nov 19 '18 at 13:19
add a comment |
You can do following:
options = {accept_insecure_certs: true, proxy: proxy}
options.merge!({browserName: 'chrome'}) if ENV['extra_args]
caps = Selenium::WebDriver::Remote::Capabilities.new(options)
Let me know if it helps!
add a comment |
You can do following:
options = {accept_insecure_certs: true, proxy: proxy}
options.merge!({browserName: 'chrome'}) if ENV['extra_args]
caps = Selenium::WebDriver::Remote::Capabilities.new(options)
Let me know if it helps!
add a comment |
You can do following:
options = {accept_insecure_certs: true, proxy: proxy}
options.merge!({browserName: 'chrome'}) if ENV['extra_args]
caps = Selenium::WebDriver::Remote::Capabilities.new(options)
Let me know if it helps!
You can do following:
options = {accept_insecure_certs: true, proxy: proxy}
options.merge!({browserName: 'chrome'}) if ENV['extra_args]
caps = Selenium::WebDriver::Remote::Capabilities.new(options)
Let me know if it helps!
answered Nov 19 '18 at 10:56
eurodo061eurodo061
7114
7114
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53372034%2foptional-hash-option-in-ruby-class%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown