class Selenium::WebDriver::Driver
The main class through which you control the browser.
@see SearchContext
@see Navigation
@see TargetLocator
@see Options
Attributes
Public Class Methods
Source
# File lib/selenium/webdriver/common/driver.rb, line 44 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
@api private
@return [Driver]
Source
# File lib/selenium/webdriver/common/driver.rb, line 71 def initialize(bridge: nil, listener: nil, **opts) @devtools = nil bridge ||= create_bridge(**opts) @bridge = listener ? Support::EventFiringBridge.new(bridge, listener) : bridge add_extensions(@bridge.browser) end
A new Driver
instance with the given bridge. End users should use Selenium::WebDriver.for
instead of using this directly.
@api private
Public Instance Methods
Source
# File lib/selenium/webdriver/common/driver.rb, line 302 def [](sel) sel = {id: sel} if sel.is_a?(String) || sel.is_a?(Symbol) find_element sel end
Get the first element matching the given selector. If given a String or Symbol, it will be used as the id of the element.
@param [String,Hash] sel id or selector @return [WebDriver::Element]
Examples:
driver['someElementId'] #=> #<WebDriver::Element:0x1011c3b88> driver[:tag_name => 'div'] #=> #<WebDriver::Element:0x1011c3b88>
Source
# File lib/selenium/webdriver/common/driver.rb, line 141 def action(**opts) bridge.action(**opts) end
@return [ActionBuilder] @see ActionBuilder
Source
# File lib/selenium/webdriver/common/driver.rb, line 263 def add_virtual_authenticator(options) bridge.add_virtual_authenticator(options) end
@return [VirtualAuthenticator] @see VirtualAuthenticator
Source
# File lib/selenium/webdriver/common/driver.rb, line 308 def browser bridge.browser end
Source
# File lib/selenium/webdriver/common/driver.rb, line 312 def capabilities bridge.capabilities end
Source
# File lib/selenium/webdriver/common/driver.rb, line 198 def close bridge&.close end
Close the current window, or the browser if no windows are left.
Source
# File lib/selenium/webdriver/common/driver.rb, line 159 def current_url bridge.url end
Get the URL of the current page
@return [String]
Source
# File lib/selenium/webdriver/common/driver.rb, line 254 def execute_async_script(script, *args) bridge.execute_async_script(script, *args) end
Execute an asynchronous piece of JavaScript in the context of the currently selected frame or window. Unlike executing execute_script
(synchronous JavaScript), scripts executed with this method must explicitly signal they are finished by invoking the provided callback. This callback is always injected into the executed function as the last argument.
@param [String] script
JavaScript source to execute
@param [WebDriver::Element,Integer, Float, Boolean, NilClass, String, Array] args
Arguments to the script. May be empty.
@return [WebDriver::Element,Integer,Float,Boolean,NilClass,String,Array]
Source
# File lib/selenium/webdriver/common/driver.rb, line 235 def execute_script(script, *args) bridge.execute_script(script, *args) end
Execute the given JavaScript
@param [String] script
JavaScript source to execute
@param [WebDriver::Element, Integer, Float, Boolean, NilClass, String, Array] args
Arguments will be available in the given script in the 'arguments' pseudo-array.
@return [WebDriver::Element,Integer,Float,Boolean,NilClass,String,Array]
The value returned from the script.
Source
# File lib/selenium/webdriver/common/driver.rb, line 149 def get(url) navigate.to(url) end
Opens the specified URL in the browser.
Source
# File lib/selenium/webdriver/common/driver.rb, line 78 def inspect format '#<%<class>s:0x%<hash>x browser=%<browser>s>', class: self.class, hash: hash * 2, browser: bridge.browser.inspect end
Source
# File lib/selenium/webdriver/common/driver.rb, line 132 def manage bridge.manage end
@return [Manager] @see Manager
Source
# File lib/selenium/webdriver/common/driver.rb, line 272 def network @network ||= WebDriver::Network.new(bridge) end
@return [Network] @see Network
Source
# File lib/selenium/webdriver/common/driver.rb, line 179 def page_source bridge.page_source end
Get the source of the current page
@return [String]
Source
# File lib/selenium/webdriver/common/driver.rb, line 187 def quit bridge.quit ensure @service_manager&.stop @devtools&.close end
Quit the browser
Source
# File lib/selenium/webdriver/common/driver.rb, line 321 def ref [:driver, nil] end
@api private @see SearchContext
Source
# File lib/selenium/webdriver/common/driver.rb, line 107 def script(*args) if args.any? WebDriver.logger.deprecate('`Driver#script` as an alias for `#execute_script`', '`Driver#execute_script`', id: :driver_script) execute_script(*args) else @script ||= WebDriver::Script.new(bridge) end end
@return [Script] @see Script
Source
# File lib/selenium/webdriver/common/driver.rb, line 89 def status @bridge.status end
information about whether a remote end is in a state in which it can create new sessions, and may include additional meta information.
@return [Hash]
Source
# File lib/selenium/webdriver/common/driver.rb, line 123 def switch_to @switch_to ||= WebDriver::TargetLocator.new(bridge) end
@return [TargetLocator] @see TargetLocator
Source
# File lib/selenium/webdriver/common/driver.rb, line 169 def title bridge.title end
Get the title of the current page
@return [String]
Source
# File lib/selenium/webdriver/common/driver.rb, line 219 def window_handle bridge.window_handle end
Get the current window handle
@return [String]
Source
# File lib/selenium/webdriver/common/driver.rb, line 209 def window_handles bridge.window_handles end
Get the window handles of open browser windows.
@return [Array] @see TargetLocator#window
Private Instance Methods
Source
# File lib/selenium/webdriver/common/driver.rb, line 345 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
Source
# File lib/selenium/webdriver/common/driver.rb, line 329 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
Source
# File lib/selenium/webdriver/common/driver.rb, line 341 def screenshot bridge.screenshot end
Source
# File lib/selenium/webdriver/common/driver.rb, line 336 def service_url(service) @service_manager = service.launch @service_manager.uri end