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.
88 89 90 91 92 93 94 95 |
# File 'lib/selenium/webdriver/common/driver.rb', line 88 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 |
# File 'lib/selenium/webdriver/common/driver.rb', line 45 def for(browser, opts = {}) listener = opts.delete(:listener) bridge = case browser when :firefox, :ff if Remote::W3CCapabilities.w3c?(opts) 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 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>
271 272 273 274 275 276 277 |
# File 'lib/selenium/webdriver/common/driver.rb', line 271 def [](sel) if sel.kind_of?(String) || sel.kind_of?(Symbol) sel = { :id => sel } end find_element sel end |
#browser ⇒ Object
279 280 281 |
# File 'lib/selenium/webdriver/common/driver.rb', line 279 def browser bridge.browser end |
#capabilities ⇒ Object
283 284 285 |
# File '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.
178 179 180 |
# File 'lib/selenium/webdriver/common/driver.rb', line 178 def close bridge.close end |
#current_url ⇒ String
Get the URL of the current page
142 143 144 |
# File 'lib/selenium/webdriver/common/driver.rb', line 142 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.
234 235 236 |
# File 'lib/selenium/webdriver/common/driver.rb', line 234 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
215 216 217 |
# File 'lib/selenium/webdriver/common/driver.rb', line 215 def execute_script(script, *args) bridge.executeScript(script, *args) end |
#get(url) ⇒ Object
Opens the specified URL in the browser.
132 133 134 |
# File 'lib/selenium/webdriver/common/driver.rb', line 132 def get(url) navigate.to(url) end |
#inspect ⇒ Object
97 98 99 |
# File 'lib/selenium/webdriver/common/driver.rb', line 97 def inspect '#<%s:0x%x browser=%s>' % [self.class, hash*2, bridge.browser.inspect] end |
#manage ⇒ Options
124 125 126 |
# File 'lib/selenium/webdriver/common/driver.rb', line 124 def manage @manage ||= WebDriver::Options.new(bridge) end |
#navigate ⇒ Navigation
106 107 108 |
# File 'lib/selenium/webdriver/common/driver.rb', line 106 def navigate @navigate ||= WebDriver::Navigation.new(bridge) end |
#page_source ⇒ String
Get the source of the current page
162 163 164 |
# File 'lib/selenium/webdriver/common/driver.rb', line 162 def page_source bridge.getPageSource end |
#quit ⇒ Object
Quit the browser
170 171 172 |
# File 'lib/selenium/webdriver/common/driver.rb', line 170 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.
292 293 294 |
# File 'lib/selenium/webdriver/common/driver.rb', line 292 def ref nil end |
#switch_to ⇒ TargetLocator
115 116 117 |
# File 'lib/selenium/webdriver/common/driver.rb', line 115 def switch_to @switch_to ||= WebDriver::TargetLocator.new(bridge) end |
#title ⇒ String
Get the title of the current page
152 153 154 |
# File 'lib/selenium/webdriver/common/driver.rb', line 152 def title bridge.getTitle end |
#window_handle ⇒ String
Get the current window handle
199 200 201 |
# File 'lib/selenium/webdriver/common/driver.rb', line 199 def window_handle bridge.getCurrentWindowHandle end |
#window_handles ⇒ Array
Get the window handles of open browser windows.
189 190 191 |
# File 'lib/selenium/webdriver/common/driver.rb', line 189 def window_handles bridge.getWindowHandles end |