Class: Selenium::WebDriver::Driver

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

Overview

The main class through which you control the browser.

Constant Summary

Constants included from Find

Find::FINDERS

Instance Attribute Summary collapse

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



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

def initialize(bridge)
  @bridge = bridge

  # TODO: refactor this away
  unless @bridge.driver_extensions.empty?
    extend(*@bridge.driver_extensions)
  end
end

Instance Attribute Details

#bridgeObject (readonly)

Returns the value of attribute bridge.



16
17
18
# File 'lib/selenium/webdriver/driver.rb', line 16

def bridge
  @bridge
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:



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

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>



242
243
244
245
246
247
248
# File 'lib/selenium/webdriver/driver.rb', line 242

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

  find_element sel
end

#closeObject

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



171
172
173
# File 'lib/selenium/webdriver/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/driver.rb', line 115

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:



208
209
210
# File 'lib/selenium/webdriver/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/driver.rb', line 105

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

#inspectObject



70
71
72
# File 'lib/selenium/webdriver/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/driver.rb', line 97

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

Returns:

See Also:



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

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

#page_sourceString

Get the source of the current page

Returns:



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

def page_source
  bridge.getPageSource
end

#quitObject

Quit the browser



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

def quit
  bridge.quit
end

#refObject

for Find



257
258
259
# File 'lib/selenium/webdriver/driver.rb', line 257

def ref
  nil
end

#switch_toTargetLocator

Returns:

See Also:



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

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

#titleString

Get the title of the current page

Returns:



125
126
127
# File 'lib/selenium/webdriver/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/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/driver.rb', line 145

def visible?
  bridge.getBrowserVisible
end

#window_handleString

Get the current window handle

Returns:



192
193
194
# File 'lib/selenium/webdriver/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/driver.rb', line 182

def window_handles
  bridge.getWindowHandles
end