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.
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 ⇒ ActionBuilder
- #add_virtual_authenticator(options) ⇒ VirtualAuthenticator
-
#bidi ⇒ BiDi
Returns the WebDriver BiDi connection for this session.
- #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) ⇒ WebDriver::Element, ...
Execute an asynchronous piece of JavaScript in the context of the currently selected frame or window.
-
#execute_script(script) ⇒ WebDriver::Element, ...
Execute the given JavaScript.
-
#get(url) ⇒ Object
Opens the specified URL in the browser.
-
#initialize(bridge: nil, listener: nil) ⇒ Driver
constructor
private
A new Driver instance with the given bridge.
- #inspect ⇒ Object
-
#install_web_extension ⇒ WebExtension
Installs a browser extension from an unpacked directory, a packed extension (.xpi/.crx/.zip), or base64-encoded bytes; works with remote (Grid) sessions.
- #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.
-
#uninstall_web_extension(extension) ⇒ Object
Uninstalls a browser extension installed with #install_web_extension.
-
#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
#initialize(bridge: nil, listener: nil) ⇒ 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 'rb/lib/selenium/webdriver/common/driver.rb', line 71 def initialize(bridge: nil, listener: nil, **) @devtools = nil bridge ||= create_bridge(**) @bridge = listener ? Support::EventFiringBridge.new(bridge, listener) : bridge add_extensions(@bridge.browser) 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_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
#[](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>
330 331 332 333 334 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 330 def [](sel) sel = {id: sel} if sel.is_a?(String) || sel.is_a?(Symbol) find_element sel end |
#action ⇒ ActionBuilder
145 146 147 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 145 def action(**) bridge.action(**) end |
#add_virtual_authenticator(options) ⇒ VirtualAuthenticator
267 268 269 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 267 def add_virtual_authenticator() bridge.add_virtual_authenticator() end |
#bidi ⇒ BiDi
Returns the WebDriver BiDi connection for this session.
100 101 102 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 100 def bidi @bridge.bidi end |
#browser ⇒ Object
336 337 338 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 336 def browser bridge.browser end |
#capabilities ⇒ Object
340 341 342 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 340 def capabilities bridge.capabilities end |
#close ⇒ Object
Close the current window, or the browser if no windows are left.
202 203 204 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 202 def close bridge&.close end |
#current_url ⇒ String
Get the URL of the current page
163 164 165 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 163 def current_url bridge.url end |
#execute_async_script(script) ⇒ 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.
258 259 260 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 258 def execute_async_script(script, *) bridge.execute_async_script(script, *) end |
#execute_script(script) ⇒ WebDriver::Element, ...
Execute the given JavaScript
239 240 241 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 239 def execute_script(script, *) bridge.execute_script(script, *) end |
#get(url) ⇒ Object
Opens the specified URL in the browser.
153 154 155 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 153 def get(url) navigate.to(url) end |
#inspect ⇒ Object
78 79 80 81 |
# File 'rb/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 |
#install_web_extension ⇒ WebExtension
Chromium requires a BiDi session and installs only unpacked directories (SeleniumHQ/selenium#16541); Firefox falls back to the classic endpoint without BiDi.
Installs a browser extension from an unpacked directory, a packed extension (.xpi/.crx/.zip), or base64-encoded bytes; works with remote (Grid) sessions.
290 291 292 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 290 def install_web_extension(...) bridge.install_web_extension(...) end |
#manage ⇒ Manager
136 137 138 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 136 def manage bridge.manage end |
#navigate ⇒ Navigation
109 110 111 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 109 def navigate @navigate ||= WebDriver::Navigation.new(bridge) end |
#network ⇒ Network
276 277 278 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 276 def network @network ||= WebDriver::Network.new(bridge) end |
#page_source ⇒ String
Get the source of the current page
183 184 185 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 183 def page_source bridge.page_source end |
#quit ⇒ Object
Quit the browser
191 192 193 194 195 196 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 191 def quit bridge.quit ensure @service_manager&.stop @devtools&.each_value(&: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.
349 350 351 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 349 def ref [:driver, nil] end |
#script ⇒ Script
118 119 120 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 118 def script @script ||= WebDriver::Script.new(bridge) 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.
89 90 91 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 89 def status @bridge.status end |
#switch_to ⇒ TargetLocator
127 128 129 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 127 def switch_to @switch_to ||= WebDriver::TargetLocator.new(bridge) end |
#title ⇒ String
Get the title of the current page
173 174 175 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 173 def title bridge.title end |
#uninstall_web_extension(extension) ⇒ Object
Uninstalls a browser extension installed with #install_web_extension.
300 301 302 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 300 def uninstall_web_extension(extension) bridge.uninstall_web_extension(extension.id) end |
#window_handle ⇒ String
Get the current window handle
223 224 225 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 223 def window_handle bridge.window_handle end |
#window_handles ⇒ Array
Get the window handles of open browser windows.
213 214 215 |
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 213 def window_handles bridge.window_handles end |