Class: Selenium::WebDriver::Driver
- Inherits:
-
Object
- Object
- Selenium::WebDriver::Driver
- Includes:
- SearchContext, TakesScreenshot
- Defined in:
- lib/selenium/webdriver/common/driver.rb
Overview
The main class through which you control the browser.
Direct Known Subclasses
Chromium::Driver, Firefox::Driver, IE::Driver, Remote::Driver, Safari::Driver
Constant Summary
Constants included from SearchContext
Class Method Summary collapse
Instance Method Summary collapse
-
#[](sel) ⇒ WebDriver::Element
Get the first element matching the given selector.
- #action(**opts) ⇒ ActionBuilder
- #add_virtual_authenticator(options) ⇒ VirtualAuthenticator
- #browser ⇒ Object
- #capabilities ⇒ Object
-
#close ⇒ Object
Close the current window, or the browser if no windows are left.
-
#current_url ⇒ String
Get the URL of the current page.
-
#execute_async_script(script, *args) ⇒ WebDriver::Element, ...
Execute an asynchronous piece of JavaScript in the context of the currently selected frame or window.
-
#execute_script(script, *args) ⇒ WebDriver::Element, ...
Execute the given JavaScript.
-
#get(url) ⇒ Object
Opens the specified URL in the browser.
-
#initialize(bridge: nil, listener: nil, **opts) ⇒ Driver
constructor
private
A new Driver instance with the given bridge.
- #inspect ⇒ Object
- #manage ⇒ Manager
- #navigate ⇒ Navigation
- #network ⇒ Network
-
#page_source ⇒ String
Get the source of the current page.
-
#quit ⇒ Object
Quit the browser.
- #ref ⇒ Object private
- #script ⇒ Script
-
#status ⇒ Hash
information about whether a remote end is in a state in which it can create new sessions, and may include additional meta information.
- #switch_to ⇒ TargetLocator
-
#title ⇒ String
Get the title of the current page.
-
#window_handle ⇒ String
Get the current window handle.
-
#window_handles ⇒ Array
Get the window handles of open browser windows.
Methods included from TakesScreenshot
#save_screenshot, #screenshot_as
Methods included from SearchContext
#find_element, #find_elements, finders
Constructor Details
permalink #initialize(bridge: nil, listener: nil, **opts) ⇒ Driver
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
A new Driver instance with the given bridge. End users should use Selenium::WebDriver.for instead of using this directly.
71 72 73 74 75 76 |
# 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 |
Class Method Details
permalink .for(browser, opts = {}) ⇒ Driver
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# 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 |
Instance Method Details
permalink #[](sel) ⇒ WebDriver::Element
Get the first element matching the given selector. If given a String or Symbol, it will be used as the id of the element.
Examples:
driver['someElementId'] #=> #<WebDriver::Element:0x1011c3b88>
driver[:tag_name => 'div'] #=> #<WebDriver::Element:0x1011c3b88>
295 296 297 298 299 |
# File 'lib/selenium/webdriver/common/driver.rb', line 295 def [](sel) sel = {id: sel} if sel.is_a?(String) || sel.is_a?(Symbol) find_element sel end |
permalink #action(**opts) ⇒ ActionBuilder
134 135 136 |
# File 'lib/selenium/webdriver/common/driver.rb', line 134 def action(**opts) bridge.action(**opts) end |
permalink #add_virtual_authenticator(options) ⇒ VirtualAuthenticator
256 257 258 |
# File 'lib/selenium/webdriver/common/driver.rb', line 256 def add_virtual_authenticator() bridge.add_virtual_authenticator() end |
permalink #browser ⇒ Object
[View source]
301 302 303 |
# File 'lib/selenium/webdriver/common/driver.rb', line 301 def browser bridge.browser end |
permalink #capabilities ⇒ Object
[View source]
305 306 307 |
# File 'lib/selenium/webdriver/common/driver.rb', line 305 def capabilities bridge.capabilities end |
permalink #close ⇒ Object
Close the current window, or the browser if no windows are left.
191 192 193 |
# File 'lib/selenium/webdriver/common/driver.rb', line 191 def close bridge&.close end |
permalink #current_url ⇒ String
Get the URL of the current page
152 153 154 |
# File 'lib/selenium/webdriver/common/driver.rb', line 152 def current_url bridge.url end |
permalink #execute_async_script(script, *args) ⇒ WebDriver::Element, ...
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.
247 248 249 |
# File 'lib/selenium/webdriver/common/driver.rb', line 247 def execute_async_script(script, *args) bridge.execute_async_script(script, *args) end |
permalink #execute_script(script, *args) ⇒ WebDriver::Element, ...
Execute the given JavaScript
228 229 230 |
# File 'lib/selenium/webdriver/common/driver.rb', line 228 def execute_script(script, *args) bridge.execute_script(script, *args) end |
permalink #get(url) ⇒ Object
Opens the specified URL in the browser.
142 143 144 |
# File 'lib/selenium/webdriver/common/driver.rb', line 142 def get(url) navigate.to(url) end |
permalink #inspect ⇒ Object
[View source]
78 79 80 81 |
# 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 |
permalink #manage ⇒ Manager
125 126 127 |
# File 'lib/selenium/webdriver/common/driver.rb', line 125 def manage bridge.manage end |
permalink #navigate ⇒ Navigation
98 99 100 |
# File 'lib/selenium/webdriver/common/driver.rb', line 98 def navigate @navigate ||= WebDriver::Navigation.new(bridge) end |
permalink #network ⇒ Network
265 266 267 |
# File 'lib/selenium/webdriver/common/driver.rb', line 265 def network @network ||= WebDriver::Network.new(bridge) end |
permalink #page_source ⇒ String
Get the source of the current page
172 173 174 |
# File 'lib/selenium/webdriver/common/driver.rb', line 172 def page_source bridge.page_source end |
permalink #quit ⇒ Object
Quit the browser
180 181 182 183 184 185 |
# File 'lib/selenium/webdriver/common/driver.rb', line 180 def quit bridge.quit ensure @service_manager&.stop @devtools&.each_value(&:close) end |
permalink #ref ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
314 315 316 |
# File 'lib/selenium/webdriver/common/driver.rb', line 314 def ref [:driver, nil] end |
permalink #script ⇒ Script
107 108 109 |
# File 'lib/selenium/webdriver/common/driver.rb', line 107 def script @script ||= WebDriver::Script.new(bridge) end |
permalink #status ⇒ Hash
information about whether a remote end is in a state in which it can create new sessions, and may include additional meta information.
89 90 91 |
# File 'lib/selenium/webdriver/common/driver.rb', line 89 def status @bridge.status end |
permalink #switch_to ⇒ TargetLocator
116 117 118 |
# File 'lib/selenium/webdriver/common/driver.rb', line 116 def switch_to @switch_to ||= WebDriver::TargetLocator.new(bridge) end |
permalink #title ⇒ String
Get the title of the current page
162 163 164 |
# File 'lib/selenium/webdriver/common/driver.rb', line 162 def title bridge.title end |
permalink #window_handle ⇒ String
Get the current window handle
212 213 214 |
# File 'lib/selenium/webdriver/common/driver.rb', line 212 def window_handle bridge.window_handle end |
permalink #window_handles ⇒ Array
Get the window handles of open browser windows.
202 203 204 |
# File 'lib/selenium/webdriver/common/driver.rb', line 202 def window_handles bridge.window_handles end |