Class: Selenium::WebDriver::Driver
- Inherits:
-
Object
- Object
- Selenium::WebDriver::Driver
- Includes:
- SearchContext
- Defined in:
- 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, W3CActionBuilder
- #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) ⇒ Driver
constructor
private
A new Driver instance with the given bridge.
- #inspect ⇒ Object
- #keyboard ⇒ Object
- #manage ⇒ Options
- #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 SearchContext
Constructor Details
#initialize(bridge) ⇒ 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.
88 89 90 91 92 93 94 |
# File 'lib/selenium/webdriver/common/driver.rb', line 88 def initialize(bridge) @bridge = bridge # TODO: refactor this away return if bridge.driver_extensions.empty? extend(*bridge.driver_extensions) 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.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/selenium/webdriver/common/driver.rb', line 43 def for(browser, opts = {}) listener = opts.delete(:listener) bridge = case browser when :firefox, :ff if Remote::W3CCapabilities.w3c?(opts) if opts[:desired_capabilities].is_a? Remote::Capabilities opts[:desired_capabilities] = Remote::W3CCapabilities.new(opts[:desired_capabilities].send(:capabilities)) end Firefox::W3CBridge.new(opts) else Firefox::Bridge.new(opts) end when :remote Remote::Bridge.new(opts) when :ie, :internet_explorer IE::Bridge.new(opts) when :chrome Chrome::Bridge.new(opts) when :edge if opts[:desired_capabilities] opts[:desired_capabilities] = Remote::W3CCapabilities.new(opts[:desired_capabilities].send(:capabilities)) end Edge::Bridge.new(opts) when :phantomjs PhantomJS::Bridge.new(opts) when :safari Safari::Bridge.new(opts) else raise ArgumentError, "unknown driver: #{browser.inspect}" end bridge = Support::EventFiringBridge.new(bridge, listener) if listener new(bridge) 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>
286 287 288 289 290 |
# File 'lib/selenium/webdriver/common/driver.rb', line 286 def [](sel) sel = {id: sel} if sel.is_a?(String) || sel.is_a?(Symbol) find_element sel end |
#action ⇒ ActionBuilder, W3CActionBuilder
132 133 134 |
# File 'lib/selenium/webdriver/common/driver.rb', line 132 def action bridge.action end |
#browser ⇒ Object
292 293 294 |
# File 'lib/selenium/webdriver/common/driver.rb', line 292 def browser bridge.browser end |
#capabilities ⇒ Object
296 297 298 |
# File 'lib/selenium/webdriver/common/driver.rb', line 296 def capabilities bridge.capabilities end |
#close ⇒ Object
Close the current window, or the browser if no windows are left.
194 195 196 |
# File 'lib/selenium/webdriver/common/driver.rb', line 194 def close bridge.close end |
#current_url ⇒ String
Get the URL of the current page
158 159 160 |
# File 'lib/selenium/webdriver/common/driver.rb', line 158 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.
250 251 252 |
# File 'lib/selenium/webdriver/common/driver.rb', line 250 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
231 232 233 |
# File 'lib/selenium/webdriver/common/driver.rb', line 231 def execute_script(script, *args) bridge.execute_script(script, *args) end |
#get(url) ⇒ Object
Opens the specified URL in the browser.
148 149 150 |
# File 'lib/selenium/webdriver/common/driver.rb', line 148 def get(url) navigate.to(url) end |
#inspect ⇒ Object
96 97 98 |
# File 'lib/selenium/webdriver/common/driver.rb', line 96 def inspect format '#<%s:0x%x browser=%s>', self.class, hash * 2, bridge.browser.inspect end |
#keyboard ⇒ Object
140 141 142 |
# File 'lib/selenium/webdriver/common/driver.rb', line 140 def keyboard bridge.keyboard end |
#manage ⇒ Options
123 124 125 |
# File 'lib/selenium/webdriver/common/driver.rb', line 123 def manage bridge. end |
#mouse ⇒ Object
136 137 138 |
# File 'lib/selenium/webdriver/common/driver.rb', line 136 def mouse bridge.mouse end |
#navigate ⇒ Navigation
105 106 107 |
# File 'lib/selenium/webdriver/common/driver.rb', line 105 def navigate @navigate ||= WebDriver::Navigation.new(bridge) end |
#page_source ⇒ String
Get the source of the current page
178 179 180 |
# File 'lib/selenium/webdriver/common/driver.rb', line 178 def page_source bridge.page_source end |
#quit ⇒ Object
Quit the browser
186 187 188 |
# File 'lib/selenium/webdriver/common/driver.rb', line 186 def quit bridge.quit 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.
305 306 307 |
# File 'lib/selenium/webdriver/common/driver.rb', line 305 def ref nil end |
#switch_to ⇒ TargetLocator
114 115 116 |
# File 'lib/selenium/webdriver/common/driver.rb', line 114 def switch_to @switch_to ||= WebDriver::TargetLocator.new(bridge) end |
#title ⇒ String
Get the title of the current page
168 169 170 |
# File 'lib/selenium/webdriver/common/driver.rb', line 168 def title bridge.title end |
#window_handle ⇒ String
Get the current window handle
215 216 217 |
# File 'lib/selenium/webdriver/common/driver.rb', line 215 def window_handle bridge.window_handle end |
#window_handles ⇒ Array
Get the window handles of open browser windows.
205 206 207 |
# File 'lib/selenium/webdriver/common/driver.rb', line 205 def window_handles bridge.window_handles end |