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



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

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
51
52
53
54
# File 'lib/selenium/webdriver/common/driver.rb', line 35

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



244
245
246
247
248
249
250
# File 'lib/selenium/webdriver/common/driver.rb', line 244

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

  find_element sel
end

#browserObject



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

def browser
  bridge.browser
end

#capabilitiesObject



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

def capabilities
  bridge.capabilities
end

#closeObject

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



173
174
175
# File 'lib/selenium/webdriver/common/driver.rb', line 173

def close
  bridge.close
end

#current_urlString

Get the URL of the current page

Returns:



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

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:



210
211
212
# File 'lib/selenium/webdriver/common/driver.rb', line 210

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

#get(url) ⇒ Object

Opens the specified URL in the browser.



107
108
109
# File 'lib/selenium/webdriver/common/driver.rb', line 107

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

#inspectObject



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

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

#manageOptions

Returns:

See Also:



99
100
101
# File 'lib/selenium/webdriver/common/driver.rb', line 99

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

Returns:

See Also:



81
82
83
# File 'lib/selenium/webdriver/common/driver.rb', line 81

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

#page_sourceString

Get the source of the current page

Returns:



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

def page_source
  bridge.getPageSource
end

#quitObject

Quit the browser



165
166
167
# File 'lib/selenium/webdriver/common/driver.rb', line 165

def quit
  bridge.quit
end

#refObject

for Find



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

def ref
  nil
end

#switch_toTargetLocator

Returns:

See Also:



90
91
92
# File 'lib/selenium/webdriver/common/driver.rb', line 90

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

#titleString

Get the title of the current page

Returns:



127
128
129
# File 'lib/selenium/webdriver/common/driver.rb', line 127

def title
  bridge.getTitle
end

#visible=(bool) ⇒ Object

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

Parameters:

  • (Boolean)


157
158
159
# File 'lib/selenium/webdriver/common/driver.rb', line 157

def visible=(bool)
  bridge.setBrowserVisible bool
end

#visible?Boolean

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

Returns:

  • (Boolean)


147
148
149
# File 'lib/selenium/webdriver/common/driver.rb', line 147

def visible?
  bridge.getBrowserVisible
end

#window_handleString

Get the current window handle

Returns:



194
195
196
# File 'lib/selenium/webdriver/common/driver.rb', line 194

def window_handle
  bridge.getCurrentWindowHandle
end

#window_handlesArray

Get the window handles of open browser windows.

Returns:

  • (Array)

See Also:



184
185
186
# File 'lib/selenium/webdriver/common/driver.rb', line 184

def window_handles
  bridge.getWindowHandles
end