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) ⇒ 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.

Returns:

See Also:



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>

Parameters:

  • sel (String, Hash)

    id or selector

Returns:



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

#actionActionBuilder, W3CActionBuilder

Returns:

See Also:

  • W3CActionBuilder


132
133
134
# File 'lib/selenium/webdriver/common/driver.rb', line 132

def action
  bridge.action
end

#browserObject



292
293
294
# File 'lib/selenium/webdriver/common/driver.rb', line 292

def browser
  bridge.browser
end

#capabilitiesObject



296
297
298
# File 'lib/selenium/webdriver/common/driver.rb', line 296

def capabilities
  bridge.capabilities
end

#closeObject

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_urlString

Get the URL of the current page

Returns:

  • (String)


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.

Parameters:

  • script (String)

    JavaScript source to execute

  • args (WebDriver::Element, Integer, Float, Boolean, NilClass, String, Array)

    Arguments to the script. May be empty.

Returns:



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

Parameters:

  • script (String)

    JavaScript source to execute

  • args (WebDriver::Element, Integer, Float, Boolean, NilClass, String, Array)

    Arguments will be available in the given script in the ‘arguments’ pseudo-array.

Returns:

  • (WebDriver::Element, Integer, Float, Boolean, NilClass, String, Array)

    The value returned from the script.



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

#inspectObject



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

#keyboardObject



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

def keyboard
  bridge.keyboard
end

#manageOptions

Returns:

See Also:



123
124
125
# File 'lib/selenium/webdriver/common/driver.rb', line 123

def manage
  bridge.options
end

#mouseObject



136
137
138
# File 'lib/selenium/webdriver/common/driver.rb', line 136

def mouse
  bridge.mouse
end

Returns:

See Also:



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

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

#page_sourceString

Get the source of the current page

Returns:

  • (String)


178
179
180
# File 'lib/selenium/webdriver/common/driver.rb', line 178

def page_source
  bridge.page_source
end

#quitObject

Quit the browser



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

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:



305
306
307
# File 'lib/selenium/webdriver/common/driver.rb', line 305

def ref
  nil
end

#switch_toTargetLocator

Returns:

See Also:



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

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

#titleString

Get the title of the current page

Returns:

  • (String)


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

def title
  bridge.title
end

#window_handleString

Get the current window handle

Returns:

  • (String)


215
216
217
# File 'lib/selenium/webdriver/common/driver.rb', line 215

def window_handle
  bridge.window_handle
end

#window_handlesArray

Get the window handles of open browser windows.

Returns:

  • (Array)

See Also:



205
206
207
# File 'lib/selenium/webdriver/common/driver.rb', line 205

def window_handles
  bridge.window_handles
end