Class: Selenium::WebDriver::Chromium::Options

Inherits:
Options
  • Object
show all
Defined in:
lib/selenium/webdriver/chromium/options.rb

Constant Summary collapse

CAPABILITIES =
{args: 'args',
binary: 'binary',
local_state: 'localState',
prefs: 'prefs',
detach: 'detach',
debugger_address: 'debuggerAddress',
exclude_switches: 'excludeSwitches',
minidump_path: 'minidumpPath',
emulation: 'mobileEmulation',
perf_logging_prefs: 'perfLoggingPrefs',
window_types: 'windowTypes',
android_package: 'androidPackage',
android_activity: 'androidActivity',
android_device_serial: 'androidDeviceSerial',
android_use_running_app: 'androidUseRunningApp'}.freeze

Constants inherited from Options

Options::W3C_OPTIONS

Instance Attribute Summary collapse

Attributes inherited from Options

#options

Instance Method Summary collapse

Methods inherited from Options

#==, #add_option, #as_json, chrome, edge, firefox, ie, safari, set_capabilities

Constructor Details

#initialize(profile: nil, **opts) ⇒ Options

Create a new Options instance.

Examples:

options = Selenium::WebDriver::Chrome::Options.new(args: ['start-maximized', 'user-data-dir=/tmp/temp_profile'])
driver = Selenium::WebDriver.for(:chrome, capabilities: options)

Options Hash (**opts):

  • encoded_extensions (Array)

    List of extensions that do not need to be Base64 encoded

  • args (Array<String>)

    List of command-line arguments to use when starting Chrome

  • binary (String)

    Path to the Chrome executable to use

  • prefs (Hash)

    A hash with each entry consisting of the name of the preference and its value

  • extensions (Array<String>)

    A list of paths to (.crx) Chrome extensions to install on startup

  • options (Hash)

    A hash for raw options

  • emulation (Hash)

    A hash for raw emulation options

  • local_state (Hash)

    A hash for the Local State file in the user data folder

  • detach (Boolean)

    whether browser is closed when the driver is sent the quit command

  • debugger_address (String)

    address of a Chrome debugger server to connect to

  • exclude_switches (Array<String>)

    command line switches to exclude

  • minidump_path (String)

    Directory to store Chrome minidumps (linux only)

  • perf_logging_prefs (Hash)

    A hash for performance logging preferences

  • window_types (Array<String>)

    A list of window types to appear in the list of window handles



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/selenium/webdriver/chromium/options.rb', line 70

def initialize(profile: nil, **opts)
  super(**opts)

  @profile = profile

  @options = {args: [],
              prefs: {},
              emulation: {},
              extensions: [],
              local_state: {},
              exclude_switches: [],
              perf_logging_prefs: {},
              window_types: []}.merge(@options)

  @logging_prefs = options.delete(:logging_prefs) || {}
  @encoded_extensions = @options.delete(:encoded_extensions) || []
  @extensions = []
  @options.delete(:extensions).each { |ext| validate_extension(ext) }
end

Instance Attribute Details

#extensionsObject

NOTE: special handling of ‘extensions’ to validate when set instead of when used



44
45
46
# File 'lib/selenium/webdriver/chromium/options.rb', line 44

def extensions
  @extensions
end

#logging_prefsObject

Returns the value of attribute logging_prefs.



24
25
26
# File 'lib/selenium/webdriver/chromium/options.rb', line 24

def logging_prefs
  @logging_prefs
end

#profileObject

Returns the value of attribute profile.



24
25
26
# File 'lib/selenium/webdriver/chromium/options.rb', line 24

def profile
  @profile
end

Instance Method Details

#add_argument(arg) ⇒ Object

Add a command-line argument to use when starting Chrome.

Examples:

Start Chrome maximized

options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('start-maximized')


143
144
145
# File 'lib/selenium/webdriver/chromium/options.rb', line 143

def add_argument(arg)
  @options[:args] << arg
end

#add_emulation(**opts) ⇒ Object

Add emulation device information

see: chromedriver.chromium.org/mobile-emulation

Examples:

Start Chrome in mobile emulation mode by device name

options = Selenium::WebDriver::Chrome::Options.new
options.add_emulation(device_name: 'iPhone 6')

Start Chrome in mobile emulation mode by device metrics

options = Selenium::WebDriver::Chrome::Options.new
options.add_emulation(device_metrics: {width: 400, height: 800, pixelRatio: 1, touch: true})

Options Hash (**opts):

  • :device_name (String)

    A valid device name from the Chrome DevTools Emulation panel

  • :device_metrics (Hash)

    Hash containing width, height, pixelRatio, touch

  • :user_agent (String)

    Full user agent



199
200
201
# File 'lib/selenium/webdriver/chromium/options.rb', line 199

def add_emulation(**opts)
  @options[:emulation] = opts
end

#add_encoded_extension(encoded) ⇒ Object

Add an extension by Base64-encoded string.

Examples:

options = Selenium::WebDriver::Chrome::Options.new
options.add_encoded_extension(encoded_string)


129
130
131
# File 'lib/selenium/webdriver/chromium/options.rb', line 129

def add_encoded_extension(encoded)
  @encoded_extensions << encoded
end

#add_extension(path) ⇒ Object

Add an extension by local path.

Examples:

options = Selenium::WebDriver::Chrome::Options.new
options.add_extension('/path/to/extension.crx')


100
101
102
# File 'lib/selenium/webdriver/chromium/options.rb', line 100

def add_extension(path)
  validate_extension(path)
end

#add_preference(name, value) ⇒ Object

Add a preference that is only applied to the user profile in use.

Examples:

Set the default homepage

options = Selenium::WebDriver::Chrome::Options.new
options.add_preference('homepage', 'http://www.seleniumhq.com/')


158
159
160
# File 'lib/selenium/webdriver/chromium/options.rb', line 158

def add_preference(name, value)
  @options[:prefs][name] = value
end

#enable_android(package: 'com.android.chrome', serial_number: nil, use_running_app: nil, activity: nil) ⇒ Object

Enables mobile browser use on Android.



215
216
217
218
219
220
# File 'lib/selenium/webdriver/chromium/options.rb', line 215

def enable_android(package: 'com.android.chrome', serial_number: nil, use_running_app: nil, activity: nil)
  @options[:android_package] = package
  @options[:android_activity] = activity unless activity.nil?
  @options[:android_device_serial] = serial_number unless serial_number.nil?
  @options[:android_use_running_app] = use_running_app unless use_running_app.nil?
end

#headless!Object

Run Chrome in headless mode. Old headless uses a non-production browser and is set with ‘–headless` Native headless from v86 - v108 is set with `–headless=chrome` Native headless from v109+ is set with `–headless=new`

Examples:

Enable headless mode

options = Selenium::WebDriver::Chrome::Options.new
options.headless!


173
174
175
176
177
178
# File 'lib/selenium/webdriver/chromium/options.rb', line 173

def headless!
  WebDriver.logger.deprecate('`Options#headless!`',
                             "`Options#add_argument('--headless=new')`",
                             id: :headless)
  add_argument '--headless'
end