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.



61
62
63
64
65
66
67
68
# File 'lib/selenium/webdriver/common/driver.rb', line 61

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.

Returns:

See Also:



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/selenium/webdriver/common/driver.rb', line 26

def for(browser, opts = {})
  listener = opts.delete(:listener)

  bridge = case browser
           when :firefox, :ff
             Firefox::Bridge.new(opts)
           when :remote
             Remote::Bridge.new(opts)
           when :ie, :internet_explorer
             IE::Bridge.new(opts)
           when :chrome
             Chrome::Bridge.new(opts)
           when :android
             Android::Bridge.new(opts)
           when :iphone
             IPhone::Bridge.new(opts)
           when :opera
             Opera::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:

  • id (String, Hash)

    or selector

Returns:



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

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

  find_element sel
end

#browserObject



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

def browser
  bridge.browser
end

#capabilitiesObject



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

def capabilities
  bridge.capabilities
end

#closeObject

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



171
172
173
# File 'lib/selenium/webdriver/common/driver.rb', line 171

def close
  bridge.close
end

#current_urlString

Get the URL of the current page

Returns:



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

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.

Parameters:

  • script (String)

    JavaSCript source to execute

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

    Arguments to the script. May be empty.

Returns:



227
228
229
# File 'lib/selenium/webdriver/common/driver.rb', line 227

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

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:



208
209
210
# File 'lib/selenium/webdriver/common/driver.rb', line 208

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

#get(url) ⇒ Object

Opens the specified URL in the browser.



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

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

#inspectObject



70
71
72
# File 'lib/selenium/webdriver/common/driver.rb', line 70

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

#manageOptions

Returns:

See Also:



97
98
99
# File 'lib/selenium/webdriver/common/driver.rb', line 97

def manage
  @manage ||= WebDriver::Options.new(bridge)
end

Returns:

See Also:



79
80
81
# File 'lib/selenium/webdriver/common/driver.rb', line 79

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

#page_sourceString

Get the source of the current page

Returns:



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

def page_source
  bridge.getPageSource
end

#quitObject

Quit the browser



163
164
165
# File 'lib/selenium/webdriver/common/driver.rb', line 163

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:



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

def ref
  nil
end

#switch_toTargetLocator

Returns:

See Also:



88
89
90
# File 'lib/selenium/webdriver/common/driver.rb', line 88

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

#titleString

Get the title of the current page

Returns:



125
126
127
# File 'lib/selenium/webdriver/common/driver.rb', line 125

def title
  bridge.getTitle
end

#visible=(bool) ⇒ Object

Set the visibility of the browser. Not applicable for all browsers.

Parameters:

  • (Boolean)


155
156
157
# File 'lib/selenium/webdriver/common/driver.rb', line 155

def visible=(bool)
  bridge.setBrowserVisible bool
end

#visible?Boolean

Get the visibility of the browser. Not applicable for all browsers.

Returns:

  • (Boolean)


145
146
147
# File 'lib/selenium/webdriver/common/driver.rb', line 145

def visible?
  bridge.getBrowserVisible
end

#window_handleString

Get the current window handle

Returns:



192
193
194
# File 'lib/selenium/webdriver/common/driver.rb', line 192

def window_handle
  bridge.getCurrentWindowHandle
end

#window_handlesArray

Get the window handles of open browser windows.

Returns:

  • (Array)

See Also:



182
183
184
# File 'lib/selenium/webdriver/common/driver.rb', line 182

def window_handles
  bridge.getWindowHandles
end