class Selenium::WebDriver::Driver

def [](sel)

def [](sel)
  sel = {id: sel} if sel.is_a?(String) || sel.is_a?(Symbol)
  find_element sel
end

def action(**)

def action(**)
  bridge.action(**)
end

def add_extensions(browser)

def add_extensions(browser)
  extensions = case browser
               when :chrome, :chrome_headless_shell, :msedge, :microsoftedge
                 Chromium::Driver::EXTENSIONS
               when :firefox
                 Firefox::Driver::EXTENSIONS
               when :safari, :safari_technology_preview
                 Safari::Driver::EXTENSIONS
               when :ie, :internet_explorer
                 IE::Driver::EXTENSIONS
               else
                 []
               end
  extensions.each { |extension| extend extension }
end

def add_virtual_authenticator(options)

def add_virtual_authenticator(options)
  bridge.add_virtual_authenticator(options)
end

def browser

def browser
  bridge.browser
end

def capabilities

def capabilities
  bridge.capabilities
end

def close

def close
  bridge&.close
end

def create_bridge(caps:, url:, http_client: nil)

def create_bridge(caps:, url:, http_client: nil)
  klass = caps['webSocketUrl'] ? Remote::BiDiBridge : Remote::Bridge
  klass.new(http_client: http_client, url: url).tap do |bridge|
    bridge.create_session(caps)
  end
end

def current_url

def current_url
  bridge.url
end

def execute_async_script(script, *)

def execute_async_script(script, *)
  bridge.execute_async_script(script, *)
end

def execute_script(script, *)

def execute_script(script, *)
  bridge.execute_script(script, *)
end

def for(browser, opts = {})

def for(browser, opts = {})
  case browser
  when :chrome, :chrome_headless_shell
    Chrome::Driver.new(**opts)
  when :internet_explorer, :ie
    IE::Driver.new(**opts)
  when :safari
    Safari::Driver.new(**opts)
  when :firefox, :ff
    Firefox::Driver.new(**opts)
  when :edge, :microsoftedge, :msedge
    Edge::Driver.new(**opts)
  when :remote
    Remote::Driver.new(**opts)
  else
    raise ArgumentError, "unknown driver: #{browser.inspect}"
  end
end

def get(url)

def get(url)
  navigate.to(url)
end

def initialize(bridge: nil, listener: nil, **)

def initialize(bridge: nil, listener: nil, **)
  @devtools = nil
  bridge ||= create_bridge(**)
  @bridge = listener ? Support::EventFiringBridge.new(bridge, listener) : bridge
  add_extensions(@bridge.browser)
end

def inspect

def inspect
  format '#<%<class>s:0x%<hash>x browser=%<browser>s>', class: self.class, hash: hash * 2,
                                                        browser: bridge.browser.inspect
end

def manage

def manage
  bridge.manage
end

def navigate

def navigate
  @navigate ||= WebDriver::Navigation.new(bridge)
end

def network

def network
  @network ||= WebDriver::Network.new(bridge)
end

def page_source

def page_source
  bridge.page_source
end

def quit

def quit
  bridge.quit
ensure
  @service_manager&.stop
  @devtools&.each_value(&:close)
end

def ref

def ref
  [:driver, nil]
end

def screenshot

def screenshot
  bridge.screenshot
end

def script

def script
  @script ||= WebDriver::Script.new(bridge)
end

def service_url(service)

def service_url(service)
  @service_manager = service.launch
  @service_manager.uri
end

def status

Returns:
  • (Hash) -
def status
  @bridge.status
end

def switch_to

def switch_to
  @switch_to ||= WebDriver::TargetLocator.new(bridge)
end

def title

def title
  bridge.title
end

def window_handle

def window_handle
  bridge.window_handle
end

def window_handles

def window_handles
  bridge.window_handles
end