Class: Selenium::WebDriver::Driver

Inherits:
Object
  • Object
show all
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

SearchContext::FINDERS

Class Method Summary collapse

Instance Method Summary collapse

Methods included from SearchContext

#find_element, #find_elements

Constructor Details

#initialize(bridge, 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.


72
73
74
75
# File 'lib/selenium/webdriver/common/driver.rb', line 72

def initialize(bridge, listener: nil)
  @bridge = bridge
  @bridge = Support::EventFiringBridge.new(bridge, listener) if listener
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
# File 'lib/selenium/webdriver/common/driver.rb', line 43

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 :phantomjs
    PhantomJS::Driver.new(opts)
  when :firefox, :ff
    Firefox::Driver.new(opts)
  when :edge
    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>

267
268
269
270
271
# File 'lib/selenium/webdriver/common/driver.rb', line 267

def [](sel)
  sel = {id: sel} if sel.is_a?(String) || sel.is_a?(Symbol)

  find_element sel
end

#actionActionBuilder, W3CActionBuilder

See Also:

  • W3CActionBuilder

113
114
115
# File 'lib/selenium/webdriver/common/driver.rb', line 113

def action
  bridge.action
end

#browserObject


273
274
275
# File 'lib/selenium/webdriver/common/driver.rb', line 273

def browser
  bridge.browser
end

#capabilitiesObject


277
278
279
# File 'lib/selenium/webdriver/common/driver.rb', line 277

def capabilities
  bridge.capabilities
end

#closeObject

Close the current window, or the browser if no windows are left.


175
176
177
# File 'lib/selenium/webdriver/common/driver.rb', line 175

def close
  bridge.close
end

#current_urlString

Get the URL of the current page


139
140
141
# File 'lib/selenium/webdriver/common/driver.rb', line 139

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.


231
232
233
# File 'lib/selenium/webdriver/common/driver.rb', line 231

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


212
213
214
# File 'lib/selenium/webdriver/common/driver.rb', line 212

def execute_script(script, *args)
  bridge.execute_script(script, *args)
end

#get(url) ⇒ Object

Opens the specified URL in the browser.


129
130
131
# File 'lib/selenium/webdriver/common/driver.rb', line 129

def get(url)
  navigate.to(url)
end

#inspectObject


77
78
79
# File 'lib/selenium/webdriver/common/driver.rb', line 77

def inspect
  format '#<%s:0x%x browser=%s>', self.class, hash * 2, bridge.browser.inspect
end

#keyboardObject


121
122
123
# File 'lib/selenium/webdriver/common/driver.rb', line 121

def keyboard
  bridge.keyboard
end

#manageOptions

See Also:


104
105
106
# File 'lib/selenium/webdriver/common/driver.rb', line 104

def manage
  bridge.options
end

#mouseObject


117
118
119
# File 'lib/selenium/webdriver/common/driver.rb', line 117

def mouse
  bridge.mouse
end

See Also:


86
87
88
# File 'lib/selenium/webdriver/common/driver.rb', line 86

def navigate
  @navigate ||= WebDriver::Navigation.new(bridge)
end

#page_sourceString

Get the source of the current page


159
160
161
# File 'lib/selenium/webdriver/common/driver.rb', line 159

def page_source
  bridge.page_source
end

#quitObject

Quit the browser


167
168
169
# File 'lib/selenium/webdriver/common/driver.rb', line 167

def quit
  bridge.quit
end

#refObject

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.

See Also:


286
287
288
# File 'lib/selenium/webdriver/common/driver.rb', line 286

def ref
  nil
end

#switch_toTargetLocator

See Also:


95
96
97
# File 'lib/selenium/webdriver/common/driver.rb', line 95

def switch_to
  @switch_to ||= WebDriver::TargetLocator.new(bridge)
end

#titleString

Get the title of the current page


149
150
151
# File 'lib/selenium/webdriver/common/driver.rb', line 149

def title
  bridge.title
end

#window_handleString

Get the current window handle


196
197
198
# File 'lib/selenium/webdriver/common/driver.rb', line 196

def window_handle
  bridge.window_handle
end

#window_handlesArray

Get the window handles of open browser windows.


186
187
188
# File 'lib/selenium/webdriver/common/driver.rb', line 186

def window_handles
  bridge.window_handles
end