Class: Selenium::WebDriver::Driver
- Inherits:
-
Object
- Object
- Selenium::WebDriver::Driver
- Includes:
- SearchContext, TakesScreenshot
- Defined in:
- build/rb/lib/selenium/webdriver/common/driver.rb
Overview
The main class through which you control the browser.
Direct Known Subclasses
Chrome::Driver, EdgeHtml::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 ⇒ ActionBuilder
- #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
- #keyboard ⇒ Object
- #manage ⇒ Manager
- #mouse ⇒ Object
- #navigate ⇒ Navigation
-
#page_source ⇒ String
Get the source of the current page.
-
#quit ⇒ Object
Quit the browser.
- #ref ⇒ Object private
- #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.
75 76 77 78 79 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 75 def initialize(bridge: nil, listener: nil, **opts) @service = nil bridge ||= create_bridge(**opts) @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 62 63 64 65 |
# File 'build/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 Edge::Driver.new(**opts) when :edge_chrome EdgeChrome::Driver.new(**opts) when :edge_html EdgeHtml::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>
273 274 275 276 277 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 273 def [](sel) sel = {id: sel} if sel.is_a?(String) || sel.is_a?(Symbol) find_element sel end |
#action ⇒ ActionBuilder
117 118 119 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 117 def action bridge.action end |
#browser ⇒ Object
279 280 281 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 279 def browser bridge&.browser end |
#capabilities ⇒ Object
283 284 285 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 283 def capabilities bridge.capabilities end |
#close ⇒ Object
Close the current window, or the browser if no windows are left.
181 182 183 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 181 def close bridge.close end |
#current_url ⇒ String
Get the URL of the current page
143 144 145 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 143 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.
237 238 239 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 237 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
218 219 220 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 218 def execute_script(script, *args) bridge.execute_script(script, *args) end |
#get(url) ⇒ Object
Opens the specified URL in the browser.
133 134 135 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 133 def get(url) navigate.to(url) end |
#inspect ⇒ Object
81 82 83 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 81 def inspect format '#<%<class>s:0x%<hash>x browser=%<browser>s>', class: self.class, hash: hash * 2, browser: bridge.browser.inspect end |
#keyboard ⇒ Object
125 126 127 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 125 def keyboard bridge.keyboard end |
#manage ⇒ Manager
108 109 110 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 108 def manage bridge.manage end |
#mouse ⇒ Object
121 122 123 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 121 def mouse bridge.mouse end |
#navigate ⇒ Navigation
90 91 92 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 90 def navigate @navigate ||= WebDriver::Navigation.new(bridge) end |
#page_source ⇒ String
Get the source of the current page
163 164 165 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 163 def page_source bridge.page_source end |
#quit ⇒ Object
Quit the browser
171 172 173 174 175 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 171 def quit bridge.quit ensure @service&.stop 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.
292 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 292 def ref; end |
#switch_to ⇒ TargetLocator
99 100 101 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 99 def switch_to @switch_to ||= WebDriver::TargetLocator.new(bridge) end |
#title ⇒ String
Get the title of the current page
153 154 155 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 153 def title bridge.title end |
#window_handle ⇒ String
Get the current window handle
202 203 204 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 202 def window_handle bridge.window_handle end |
#window_handles ⇒ Array
Get the window handles of open browser windows.
192 193 194 |
# File 'build/rb/lib/selenium/webdriver/common/driver.rb', line 192 def window_handles bridge.window_handles end |