module Selenium::Client::Base

Driver constructor and session management commands

Attributes

browser_string[R]
browser_url[R]
default_javascript_framework[R]
default_timeout_in_seconds[R]
highlight_located_element_by_default[R]
host[R]
port[R]

Public Class Methods

new(*args) click to toggle source

Create a new client driver

Example:

::new \

:host => "localhost",
:port => 4444,
:browser => "*firefox",
:timeout_in_seconds => 10,
:url => "http://localhost:3000",

You can also set the default javascript framework used for :wait_for AJAX and effects semantics (:prototype is the default value):

::new \

:host => "localhost",
:port => 4444,
:browser => "*firefox",
:timeout_in_seconds => 10,
:url => "http://localhost:3000",
:javascript_framework => :jquery

You can also enables automatic highlighting of located elements by passing the highlight_located_element option, e.g.

::new \

:host => "localhost",
:port => 4444,
:browser => "*firefox",
:highlight_located_element => true
# File lib/selenium/client/base.rb, line 48
def initialize(*args)
  if args[0].kind_of?(Hash)
    options = args[0]
    @host = options[:host]
    @port = options[:port].to_i
    @browser_string = options[:browser]
    @browser_url = options[:url]
    @default_timeout_in_seconds = (options[:timeout_in_seconds] || 300).to_i
    @default_javascript_framework = options[:javascript_framework] || :prototype
    @highlight_located_element_by_default = options[:highlight_located_element] || false
  else
    @host = args[0]
    @port = args[1].to_i
    @browser_string = args[2]
    @browser_url = args[3]
    @default_timeout_in_seconds = (args[4] || 300).to_i
    @default_javascript_framework = :prototype
    @highlight_located_element_by_default = false
  end

  @extension_js = ""
  @session_id = nil
end

Public Instance Methods

chrome_backend?() click to toggle source
# File lib/selenium/client/base.rb, line 120
def chrome_backend?
  ["*chrome", "*firefox", "*firefox2", "*firefox3"].include?(@browser_string)
end
close_current_browser_session() click to toggle source
# File lib/selenium/client/base.rb, line 107
def close_current_browser_session
  remote_control_command "testComplete" if @session_id
  @session_id = nil
end
javascript_extension=(new_javascript_extension) click to toggle source
# File lib/selenium/client/base.rb, line 124
def javascript_extension=(new_javascript_extension)
  @extension_js = new_javascript_extension
end
Also aliased as: set_extension_js
session_started?() click to toggle source
# File lib/selenium/client/base.rb, line 72
def session_started?
  not @session_id.nil?
end
set_extension_js(new_javascript_extension)
start(opts = {}) click to toggle source
# File lib/selenium/client/base.rb, line 112
def start(opts = {})
  start_new_browser_session opts
end
start_new_browser_session(options={}) click to toggle source

Starts a new browser session (launching a new browser matching configuration provided at driver creation time).

Browser session specific option can also be provided. e.g.

driver.start_new_browser_session(:captureNetworkTraffic => true)
# File lib/selenium/client/base.rb, line 83
def start_new_browser_session(options={})
  start_args = [@browser_string, @browser_url, @extension_js]

  if driver = options.delete(:driver)
    expected_browser_string = "*webdriver"
    unless @browser_string == expected_browser_string
      raise ArgumentError, "can't use :driver unless the browser string is #{expected_browser_string.inspect} (got #{@browser_string.inspect})"
    end

    sid = driver.capabilities['webdriver.remote.sessionid']
    sid or raise ArgumentError, "This driver can not be wrapped in the RC API."

    start_args << "webdriver.remote.sessionid=#{sid}"
  end

  start_args << options.collect {|key,value| "#{key.to_s}=#{value.to_s}"}.sort.join(";")

  @session_id = string_command "getNewBrowserSession", start_args
  # Consistent timeout on the remote control and driver side.
  # Intuitive and this is what you want 90% of the time
  self.remote_control_timeout_in_seconds = @default_timeout_in_seconds
  self.highlight_located_element = true if highlight_located_element_by_default
end
stop() click to toggle source
# File lib/selenium/client/base.rb, line 116
def stop
        close_current_browser_session
end