Class: Selenium::WebDriver::Driver
- Inherits:
-
Object
- Object
- Selenium::WebDriver::Driver
- Includes:
- SearchContext, TakesScreenshot
- Defined in:
- rb/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, ...
(also: #script)
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
-
#page_source ⇒ String
Get the source of the current page.
-
#quit ⇒ Object
Quit the browser.
- #ref ⇒ Object private
-
#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
Constructor Details
#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 77 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 71 def initialize(bridge: nil, listener: nil, **opts) @devtools = nil @bidi = nil bridge ||= create_bridge(**opts) add_extensions(bridge.browser) @bridge = listener ? Support::EventFiringBridge.new(bridge, listener) : bridge end |
Class Method Details
.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 'rb/lib/selenium/webdriver/common/driver.rb', line 44 def for(browser, opts = {}) case browser when :chrome 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
#[](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>
288 289 290 291 292 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 288 def [](sel) sel = {id: sel} if sel.is_a?(String) || sel.is_a?(Symbol) find_element sel end |
#action(**opts) ⇒ ActionBuilder
126 127 128 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 126 def action(**opts) bridge.action(**opts) end |
#add_virtual_authenticator(options) ⇒ VirtualAuthenticator
252 253 254 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 252 def add_virtual_authenticator() bridge.add_virtual_authenticator() end |
#browser ⇒ Object
294 295 296 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 294 def browser bridge&.browser end |
#capabilities ⇒ Object
298 299 300 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 298 def capabilities bridge.capabilities end |
#close ⇒ Object
Close the current window, or the browser if no windows are left.
184 185 186 187 188 189 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 184 def close # If no top-level browsing contexts are open after calling close, # it indicates that the WebDriver session is closed. # If the WebDriver session is closed, the BiDi session also needs to be closed. bridge.close.tap { |handles| @bidi&.close if handles&.empty? } end |
#current_url ⇒ String
Get the URL of the current page
144 145 146 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 144 def current_url bridge.url end |
#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.
243 244 245 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 243 def execute_async_script(script, *args) bridge.execute_async_script(script, *args) end |
#execute_script(script, *args) ⇒ WebDriver::Element, ... Also known as: script
Execute the given JavaScript
224 225 226 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 224 def execute_script(script, *args) bridge.execute_script(script, *args) end |
#get(url) ⇒ Object
Opens the specified URL in the browser.
134 135 136 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 134 def get(url) navigate.to(url) end |
#inspect ⇒ Object
79 80 81 82 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 79 def inspect format '#<%<class>s:0x%<hash>x browser=%<browser>s>', class: self.class, hash: hash * 2, browser: bridge.browser.inspect end |
#manage ⇒ Manager
117 118 119 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 117 def manage bridge.manage end |
#navigate ⇒ Navigation
99 100 101 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 99 def navigate @navigate ||= WebDriver::Navigation.new(bridge) end |
#page_source ⇒ String
Get the source of the current page
164 165 166 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 164 def page_source bridge.page_source end |
#quit ⇒ Object
Quit the browser
172 173 174 175 176 177 178 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 172 def quit bridge.quit ensure @service_manager&.stop @devtools&.close @bidi&.close end |
#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.
307 308 309 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 307 def ref [:driver, nil] end |
#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.
90 91 92 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 90 def status @bridge.status end |
#switch_to ⇒ TargetLocator
108 109 110 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 108 def switch_to @switch_to ||= WebDriver::TargetLocator.new(bridge) end |
#title ⇒ String
Get the title of the current page
154 155 156 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 154 def title bridge.title end |
#window_handle ⇒ String
Get the current window handle
208 209 210 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 208 def window_handle bridge.window_handle end |
#window_handles ⇒ Array
Get the window handles of open browser windows.
198 199 200 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 198 def window_handles bridge.window_handles end |