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.
- #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
- #manage ⇒ Options
- #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.
92 93 94 95 96 97 98 99 |
# File 'lib/selenium/webdriver/common/driver.rb', line 92 def initialize(bridge) @bridge = bridge # TODO: refactor this away unless bridge.driver_extensions.empty? extend(*bridge.driver_extensions) end 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.
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 79 80 81 82 |
# File 'lib/selenium/webdriver/common/driver.rb', line 45 def for(browser, opts = {}) listener = opts.delete(:listener) bridge = case browser when :firefox, :ff, :marionette if Remote::W3CCapabilities.w3c?(opts) Firefox::W3CBridge.new(opts) else Firefox::Bridge.new(opts) end when :remote if Remote::W3CCapabilities.w3c?(opts) Remote::W3CBridge.new(opts) else Remote::Bridge.new(opts) end when :ie, :internet_explorer IE::Bridge.new(opts) when :chrome Chrome::Bridge.new(opts) when :edge Edge::Bridge.new(opts) when :android Android::Bridge.new(opts) when :iphone IPhone::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>
275 276 277 278 279 280 281 |
# File 'lib/selenium/webdriver/common/driver.rb', line 275 def [](sel) if sel.kind_of?(String) || sel.kind_of?(Symbol) sel = { :id => sel } end find_element sel end |
#browser ⇒ Object
283 284 285 |
# File 'lib/selenium/webdriver/common/driver.rb', line 283 def browser bridge.browser end |
#capabilities ⇒ Object
287 288 289 |
# File 'lib/selenium/webdriver/common/driver.rb', line 287 def capabilities bridge.capabilities end |
#close ⇒ Object
Close the current window, or the browser if no windows are left.
182 183 184 |
# File 'lib/selenium/webdriver/common/driver.rb', line 182 def close bridge.close end |
#current_url ⇒ String
Get the URL of the current page
146 147 148 |
# File 'lib/selenium/webdriver/common/driver.rb', line 146 def current_url bridge.getCurrentUrl 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.
238 239 240 |
# File 'lib/selenium/webdriver/common/driver.rb', line 238 def execute_async_script(script, *args) bridge.executeAsyncScript(script, *args) end |
#execute_script(script, *args) ⇒ WebDriver::Element, ... Also known as: script
Execute the given JavaScript
219 220 221 |
# File 'lib/selenium/webdriver/common/driver.rb', line 219 def execute_script(script, *args) bridge.executeScript(script, *args) end |
#get(url) ⇒ Object
Opens the specified URL in the browser.
136 137 138 |
# File 'lib/selenium/webdriver/common/driver.rb', line 136 def get(url) navigate.to(url) end |
#inspect ⇒ Object
101 102 103 |
# File 'lib/selenium/webdriver/common/driver.rb', line 101 def inspect '#<%s:0x%x browser=%s>' % [self.class, hash*2, bridge.browser.inspect] end |
#manage ⇒ Options
128 129 130 |
# File 'lib/selenium/webdriver/common/driver.rb', line 128 def manage @manage ||= WebDriver::Options.new(bridge) end |
#navigate ⇒ Navigation
110 111 112 |
# File 'lib/selenium/webdriver/common/driver.rb', line 110 def navigate @navigate ||= WebDriver::Navigation.new(bridge) end |
#page_source ⇒ String
Get the source of the current page
166 167 168 |
# File 'lib/selenium/webdriver/common/driver.rb', line 166 def page_source bridge.getPageSource end |
#quit ⇒ Object
Quit the browser
174 175 176 |
# File 'lib/selenium/webdriver/common/driver.rb', line 174 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.
296 297 298 |
# File 'lib/selenium/webdriver/common/driver.rb', line 296 def ref nil end |
#switch_to ⇒ TargetLocator
119 120 121 |
# File 'lib/selenium/webdriver/common/driver.rb', line 119 def switch_to @switch_to ||= WebDriver::TargetLocator.new(bridge) end |
#title ⇒ String
Get the title of the current page
156 157 158 |
# File 'lib/selenium/webdriver/common/driver.rb', line 156 def title bridge.getTitle end |
#window_handle ⇒ String
Get the current window handle
203 204 205 |
# File 'lib/selenium/webdriver/common/driver.rb', line 203 def window_handle bridge.getCurrentWindowHandle end |
#window_handles ⇒ Array
Get the window handles of open browser windows.
193 194 195 |
# File 'lib/selenium/webdriver/common/driver.rb', line 193 def window_handles bridge.getWindowHandles end |