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

Inherits:
Options
  • Object
show all
Defined in:
rb/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::GRID_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) ⇒ 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, options: options)

Parameters:

  • profile (Profile) (defaults to: nil)

    An instance of a Chrome::Profile Class

  • opts (Hash)

    the pre-defined options to create the Chrome::Options with



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

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

  @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 'rb/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 'rb/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 'rb/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')

Parameters:

  • arg (String)

    The command-line argument to add



143
144
145
# File 'rb/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})

Parameters:

  • opts (Hash)

    the pre-defined options for adding mobile emulation values

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



181
182
183
# File 'rb/lib/selenium/webdriver/chromium/options.rb', line 181

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)

Parameters:

  • encoded (String)

    The Base64-encoded string of the .crx file



129
130
131
# File 'rb/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')

Parameters:

  • path (String)

    The local path to the .crx file



100
101
102
# File 'rb/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/')

Parameters:

  • name (String)

    Key of the preference

  • value (Boolean, String, Integer)

    Value of the preference



158
159
160
# File 'rb/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.

Parameters:

  • package (String) (defaults to: 'com.android.chrome')

    The package name of the Chrome or WebView app.

  • serial_number (String) (defaults to: nil)

    The device serial number on which to launch the Chrome or WebView app.

  • use_running_app (String) (defaults to: nil)

    When true uses an already-running Chrome or WebView app, instead of launching the app with a clear data directory.

  • activity (String) (defaults to: nil)

    Name of the Activity hosting the WebView (Not available on Chrome Apps).

See Also:



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

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