class Selenium::WebDriver::Driver

The main class through which you control the browser.

@see SearchContext @see Navigation @see TargetLocator @see Options

Public Class Methods

for(browser, opts = {}) click to toggle source

@api private

@see Selenium::WebDriver.for

@return [Driver]

# File lib/selenium/webdriver/common/driver.rb, line 44
def for(browser, opts = {})
  listener = opts.delete(:listener)

  bridge = case browser
           when :firefox, :ff, :marionette
             if Remote::W3CCapabilities.w3c?(opts)
               Firefox::W3CBridge.new(opts)
             else
               Firefox::Bridge.new(opts)
             end
           when :remote
             if Remote::W3CCapabilities.w3c?(opts)
               Remote::W3CBridge.new(opts)
             else
               Remote::Bridge.new(opts)
             end
           when :ie, :internet_explorer
             IE::Bridge.new(opts)
           when :chrome
             Chrome::Bridge.new(opts)
           when :edge
             Edge::Bridge.new(opts)
           when :android
             Android::Bridge.new(opts)
           when :iphone
             IPhone::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
new(bridge) click to toggle source

A new Driver instance with the given bridge. End users should use Selenium::WebDriver.for instead of using this directly.

@api private

# File lib/selenium/webdriver/common/driver.rb, line 91
def initialize(bridge)
  @bridge = bridge

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

Public Instance Methods

[](sel) click to toggle source

Get the first element matching the given selector. If given a String or Symbol, it will be used as the id of the element.

@param [String,Hash] id or selector @return [WebDriver::Element]

Examples:

driver['someElementId']    #=> #<WebDriver::Element:0x1011c3b88>
driver[:tag_name => 'div'] #=> #<WebDriver::Element:0x1011c3b88>
# File lib/selenium/webdriver/common/driver.rb, line 274
def [](sel)
  if sel.kind_of?(String) || sel.kind_of?(Symbol)
    sel = { :id => sel }
  end

  find_element sel
end
browser() click to toggle source
# File lib/selenium/webdriver/common/driver.rb, line 282
def browser
  bridge.browser
end
capabilities() click to toggle source
# File lib/selenium/webdriver/common/driver.rb, line 286
def capabilities
  bridge.capabilities
end
close() click to toggle source

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

# File lib/selenium/webdriver/common/driver.rb, line 181
def close
  bridge.close
end
current_url() click to toggle source

Get the URL of the current page

@return [String]

# File lib/selenium/webdriver/common/driver.rb, line 145
def current_url
  bridge.getCurrentUrl
end
execute_async_script(script, *args) click to toggle source

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.

@param [String] script

JavaScript source to execute

@param [WebDriver::Element,Integer, Float, Boolean, NilClass, String, Array] *args

Arguments to the script. May be empty.

@return [WebDriver::Element,Integer,Float,Boolean,NilClass,String,Array]

# File lib/selenium/webdriver/common/driver.rb, line 237
def execute_async_script(script, *args)
  bridge.executeAsyncScript(script, *args)
end
execute_script(script, *args) click to toggle source

Execute the given JavaScript

@param [String] script

JavaScript source to execute

@param [WebDriver::Element,Integer, Float, Boolean, NilClass, String, Array] *args

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

@return [WebDriver::Element,Integer,Float,Boolean,NilClass,String,Array]

The value returned from the script.
# File lib/selenium/webdriver/common/driver.rb, line 218
def execute_script(script, *args)
  bridge.executeScript(script, *args)
end
Also aliased as: script
get(url) click to toggle source

Opens the specified URL in the browser.

# File lib/selenium/webdriver/common/driver.rb, line 135
def get(url)
  navigate.to(url)
end
inspect() click to toggle source
# File lib/selenium/webdriver/common/driver.rb, line 100
def inspect
  '#<%s:0x%x browser=%s>' % [self.class, hash*2, bridge.browser.inspect]
end
manage() click to toggle source

@return [Options] @see Options

# File lib/selenium/webdriver/common/driver.rb, line 127
def manage
  @manage ||= WebDriver::Options.new(bridge)
end
navigate() click to toggle source

@return [Navigation] @see Navigation

page_source() click to toggle source

Get the source of the current page

@return [String]

# File lib/selenium/webdriver/common/driver.rb, line 165
def page_source
  bridge.getPageSource
end
quit() click to toggle source

Quit the browser

# File lib/selenium/webdriver/common/driver.rb, line 173
def quit
  bridge.quit
end
ref() click to toggle source

@api private @see SearchContext

# File lib/selenium/webdriver/common/driver.rb, line 295
def ref
  nil
end
script(script, *args)

driver.script('function() { … };')

Alias for: execute_script
switch_to() click to toggle source

@return [TargetLocator] @see TargetLocator

# File lib/selenium/webdriver/common/driver.rb, line 118
def switch_to
  @switch_to ||= WebDriver::TargetLocator.new(bridge)
end
title() click to toggle source

Get the title of the current page

@return [String]

# File lib/selenium/webdriver/common/driver.rb, line 155
def title
  bridge.getTitle
end
window_handle() click to toggle source

Get the current window handle

@return [String]

# File lib/selenium/webdriver/common/driver.rb, line 202
def window_handle
  bridge.getCurrentWindowHandle
end
window_handles() click to toggle source

Get the window handles of open browser windows.

@return [Array] @see Selenium::WebDriver::TargetLocator#window

# File lib/selenium/webdriver/common/driver.rb, line 192
def window_handles
  bridge.getWindowHandles
end

Private Instance Methods

bridge() click to toggle source
# File lib/selenium/webdriver/common/driver.rb, line 301
def bridge
  @bridge
end