Class: Selenium::WebDriver::Chrome::Options
- Inherits:
-
Object
- Object
- Selenium::WebDriver::Chrome::Options
- Defined in:
- lib/selenium/webdriver/chrome/options.rb
Instance Attribute Summary collapse
-
#args ⇒ Object
readonly
Returns the value of attribute args.
-
#binary ⇒ Object
Returns the value of attribute binary.
-
#emulation ⇒ Object
readonly
Returns the value of attribute emulation.
-
#encoded_extensions ⇒ Object
readonly
Returns the value of attribute encoded_extensions.
-
#extensions ⇒ Object
readonly
Returns the value of attribute extensions.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#prefs ⇒ Object
readonly
Returns the value of attribute prefs.
Instance Method Summary collapse
-
#add_argument(arg) ⇒ Object
Add a command-line argument to use when starting Chrome.
-
#add_emulation(device_name: nil, device_metrics: nil, user_agent: nil) ⇒ Object
Add an emulation device name.
-
#add_encoded_extension(encoded) ⇒ Object
Add an extension by Base64-encoded string.
-
#add_extension(path) ⇒ Object
Add an extension by local path.
-
#add_option(name, value) ⇒ Object
Add a new option not yet handled by bindings.
-
#add_preference(name, value) ⇒ Object
Add a preference that is only applied to the user profile in use.
- #as_json ⇒ Object private
-
#headless! ⇒ Object
Run Chrome in headless mode.
-
#initialize(**opts) ⇒ Options
constructor
Create a new Options instance.
Constructor Details
#initialize(**opts) ⇒ Options
Create a new Options instance.
41 42 43 44 45 46 47 48 49 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 41 def initialize(**opts) @args = Set.new(opts.delete(:args) || []) @binary = opts.delete(:binary) || Chrome.path @prefs = opts.delete(:prefs) || {} @extensions = opts.delete(:extensions) || [] @options = opts.delete(:options) || {} @emulation = opts.delete(:emulation) || {} @encoded_extensions = [] end |
Instance Attribute Details
#args ⇒ Object (readonly)
Returns the value of attribute args.
22 23 24 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 22 def args @args end |
#binary ⇒ Object
Returns the value of attribute binary.
23 24 25 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 23 def binary @binary end |
#emulation ⇒ Object (readonly)
Returns the value of attribute emulation.
22 23 24 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 22 def emulation @emulation end |
#encoded_extensions ⇒ Object (readonly)
Returns the value of attribute encoded_extensions.
22 23 24 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 22 def encoded_extensions @encoded_extensions end |
#extensions ⇒ Object (readonly)
Returns the value of attribute extensions.
22 23 24 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 22 def extensions @extensions end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
22 23 24 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 22 def @options end |
#prefs ⇒ Object (readonly)
Returns the value of attribute prefs.
22 23 24 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 22 def prefs @prefs end |
Instance Method Details
#add_argument(arg) ⇒ Object
Add a command-line argument to use when starting Chrome.
91 92 93 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 91 def add_argument(arg) @args << arg end |
#add_emulation(device_name: nil, device_metrics: nil, user_agent: nil) ⇒ Object
Add an emulation device name
156 157 158 159 160 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 156 def add_emulation(device_name: nil, device_metrics: nil, user_agent: nil) @emulation[:deviceName] = device_name if device_name @emulation[:deviceMetrics] = device_metrics if device_metrics @emulation[:userAgent] = user_agent if user_agent end |
#add_encoded_extension(encoded) ⇒ Object
Add an extension by Base64-encoded string.
77 78 79 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 77 def add_encoded_extension(encoded) @encoded_extensions << encoded end |
#add_extension(path) ⇒ Object
Add an extension by local path.
61 62 63 64 65 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 61 def add_extension(path) raise Error::WebDriverError, "could not find extension at #{path.inspect}" unless File.file?(path) raise Error::WebDriverError, "file was not an extension #{path.inspect}" unless File.extname(path) == '.crx' @extensions << path end |
#add_option(name, value) ⇒ Object
Add a new option not yet handled by bindings.
106 107 108 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 106 def add_option(name, value) @options[name] = value end |
#add_preference(name, value) ⇒ Object
Add a preference that is only applied to the user profile in use.
121 122 123 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 121 def add_preference(name, value) prefs[name] = value end |
#as_json ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 166 def as_json(*) extensions = @extensions.map do |crx_path| File.open(crx_path, 'rb') { |crx_file| Base64.strict_encode64 crx_file.read } end extensions.concat(@encoded_extensions) opts = @options opts[:binary] = @binary if @binary opts[:args] = @args.to_a if @args.any? opts[:extensions] = extensions if extensions.any? opts[:mobileEmulation] = @emulation unless @emulation.empty? opts[:prefs] = @prefs unless @prefs.empty? opts end |
#headless! ⇒ Object
Run Chrome in headless mode.
133 134 135 136 137 138 |
# File 'lib/selenium/webdriver/chrome/options.rb', line 133 def headless! add_argument '--headless' # https://bugs.chromium.org/p/chromium/issues/detail?id=737678#c1 add_argument '--disable-gpu' if WebDriver::Platform.windows? end |