class Selenium::WebDriver::Chrome::Driver
Public Class Methods
new(opts = {})
click to toggle source
Calls superclass method
Selenium::WebDriver::Driver::new
# File lib/selenium/webdriver/chrome/driver.rb, line 37 def initialize(opts = {}) opts[:desired_capabilities] = create_capabilities(opts) opts[:url] ||= service_url(opts) listener = opts.delete(:listener) @bridge = Remote::Bridge.handshake(**opts) @bridge.extend Bridge super(@bridge, listener: listener) end
Public Instance Methods
browser()
click to toggle source
# File lib/selenium/webdriver/chrome/driver.rb, line 49 def browser :chrome end
execute_cdp(cmd, **params)
click to toggle source
# File lib/selenium/webdriver/chrome/driver.rb, line 59 def execute_cdp(cmd, **params) @bridge.send_command(cmd: cmd, params: params) end
quit()
click to toggle source
Calls superclass method
Selenium::WebDriver::Driver#quit
# File lib/selenium/webdriver/chrome/driver.rb, line 53 def quit super ensure @service&.stop end
Private Instance Methods
create_capabilities(opts)
click to toggle source
# File lib/selenium/webdriver/chrome/driver.rb, line 65 def create_capabilities(opts) caps = opts.delete(:desired_capabilities) { Remote::Capabilities.chrome } options = opts.delete(:options) { Options.new } args = opts.delete(:args) || opts.delete(:switches) if args WebDriver.logger.deprecate ':args or :switches', 'Selenium::WebDriver::Chrome::Options#add_argument' raise ArgumentError, ':args must be an Array of Strings' unless args.is_a? Array args.each { |arg| options.add_argument(arg.to_s) } end profile = opts.delete(:profile) if profile WebDriver.logger.deprecate 'Selenium::WebDriver::Chrome::Driver#new with `:profile` parameter', 'Selenium::WebDriver::Chrome::Options#profile or Options#add_option' profile = profile.as_json if options.args.none?(&/user-data-dir/.method(:match?)) options.add_argument("--user-data-dir=#{profile['directory']}") end if profile['extensions'] WebDriver.logger.deprecate 'Selenium::WebDriver::Chrome::Profile#extensions', 'Selenium::WebDriver::Chrome::Options#add_extension' profile['extensions'].each do |extension| options.add_encoded_extension(extension) end end end if opts.key?(:detach) WebDriver.logger.deprecate 'Selenium::WebDriver::Chrome::Driver#new with `:detach` parameter', 'Selenium::WebDriver::Chrome::Options#new or Options#add_option' options.add_option(:detach, opts.delete(:detach)) end prefs = opts.delete(:prefs) if prefs WebDriver.logger.deprecate ':prefs', 'Selenium::WebDriver::Chrome::Options#add_preference' prefs.each do |key, value| options.add_preference(key, value) end end options = options.as_json caps.merge!(options) unless options[Options::KEY].empty? if opts.key?(:proxy) || opts.key?('proxy') WebDriver.logger.deprecate 'Selenium::WebDriver::Chrome::Driver#new with `:proxy` parameter', 'Selenium::WebDriver::Chrome::Capabilities#proxy=' caps[:proxy] = opts.delete(:proxy) if opts.key?(:proxy) caps[:proxy] ||= opts.delete('proxy') if opts.key?('proxy') end caps end