Class: Selenium::WebDriver::Driver

Inherits:
Object
  • Object
show all
Includes:
Find
Defined in:
lib/selenium/webdriver/common/driver.rb

Overview

The main class through which you control the browser.

Constant Summary

Constants included from Find

Find::FINDERS

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Find

#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



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

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, *args) ⇒ Driver

Create a new Driver instance with the correct bridge for the given browser

Examples:


Driver.for :firefox, :profile => "some-profile"
Driver.for :firefox, :profile => Profile.new
Driver.for :remote,  :url => "http://localhost:4444/wd/hub", :desired_capabilities => caps

Parameters:

  • browser (:ie, :internet_explorer, :remote, :chrome, :firefox, :ff)

    the driver type to use

  • *rest

    arguments passed to Bridge.new

Returns:



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/selenium/webdriver/common/driver.rb', line 35

def for(browser, *args)
  bridge = case browser
           when :ie, :internet_explorer
             IE::Bridge.new(*args)
           when :remote
             Remote::Bridge.new(*args)
           when :chrome
             Chrome::Bridge.new(*args)
           when :firefox, :ff
             Firefox::Bridge.new(*args)
           else
             raise ArgumentError, "unknown driver: #{browser.inspect}"
           end

   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.

Parameters:

  • id (String, Hash)

    or selector

Returns:

  • (WebDriver::Element)

    driver #=> #<WebDriver::Element:0x1011c3b88> driver[:tag_name => ‘div’] #=> #<WebDriver::Element:0x1011c3b88>



240
241
242
243
244
245
246
# File 'lib/selenium/webdriver/common/driver.rb', line 240

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

  find_element sel
end

#browserObject



259
260
261
# File 'lib/selenium/webdriver/common/driver.rb', line 259

def browser
  bridge.browser
end

#capabilitiesObject



263
264
265
# File 'lib/selenium/webdriver/common/driver.rb', line 263

def capabilities
  bridge.capabilities
end

#closeObject

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



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

def close
  bridge.close
end

#current_urlString

Get the URL of the current page

Returns:



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

def current_url
  bridge.getCurrentUrl
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 as the ‘arguments’ array.

Returns:



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

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

#get(url) ⇒ Object

Opens the specified URL in the browser.



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

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

#inspectObject



68
69
70
# File 'lib/selenium/webdriver/common/driver.rb', line 68

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

#manageOptions

Returns:

See Also:



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

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

Returns:

See Also:



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

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

#page_sourceString

Get the source of the current page

Returns:



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

def page_source
  bridge.getPageSource
end

#quitObject

Quit the browser



161
162
163
# File 'lib/selenium/webdriver/common/driver.rb', line 161

def quit
  bridge.quit
end

#refObject

for Find



255
256
257
# File 'lib/selenium/webdriver/common/driver.rb', line 255

def ref
  nil
end

#switch_toTargetLocator

Returns:

See Also:



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

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

#titleString

Get the title of the current page

Returns:



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

def title
  bridge.getTitle
end

#visible=(bool) ⇒ Object

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

Parameters:

  • (Boolean)


153
154
155
# File 'lib/selenium/webdriver/common/driver.rb', line 153

def visible=(bool)
  bridge.setBrowserVisible bool
end

#visible?Boolean

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

Returns:

  • (Boolean)


143
144
145
# File 'lib/selenium/webdriver/common/driver.rb', line 143

def visible?
  bridge.getBrowserVisible
end

#window_handleString

Get the current window handle

Returns:



190
191
192
# File 'lib/selenium/webdriver/common/driver.rb', line 190

def window_handle
  bridge.getCurrentWindowHandle
end

#window_handlesArray

Get the window handles of open browser windows.

Returns:

  • (Array)

See Also:



180
181
182
# File 'lib/selenium/webdriver/common/driver.rb', line 180

def window_handles
  bridge.getWindowHandles
end