class Sauce::Selenium2

Attributes

config[R]
driver[R]
raw_driver[R]
watir[R]

Public Class Methods

new(opts={}) click to toggle source
# File lib/sauce/selenium.rb, line 54
def initialize(opts={})
  @config = Sauce::Config.new(opts)
  http_client = ::Selenium::WebDriver::Remote::Http::Persistent.new
  http_client.timeout = 300 # Browser launch can take a while

  desired_capabilities = @config.to_desired_capabilities
  Sauce.logger.debug "Desired Capabilities at creation: #{desired_capabilities}"

  @driver = Sauce.webdriver_method.call(:remote,
                  :url => "http://#{@config.username}:#{@config.access_key}@#{@config.host}:#{@config.port}/wd/hub",
                  :desired_capabilities => desired_capabilities,
                  :http_client => http_client)
  http_client.timeout = 90 # Once the browser is up, commands should time out reasonably

  @watir = defined?(Watir::Browser) && @driver.is_a?(Watir::Browser)
  @raw_driver = watir ? @driver.driver : @driver

  raw_driver.file_detector = lambda do |args|
    file_path = args.first.to_s
    File.exist?(file_path) ? file_path : false
  end

  Sauce.logger.debug "Thread #{Thread.current.object_id} created driver #{raw_driver.session_id}"
  Sauce::Selenium2.used_at_least_once
end
used_at_least_once() click to toggle source
# File lib/sauce/selenium.rb, line 50
def self.used_at_least_once
  @used_at_least_once = true
end
used_at_least_once?() click to toggle source
# File lib/sauce/selenium.rb, line 46
def self.used_at_least_once?
  @used_at_least_once || false
end

Public Instance Methods

current_url() click to toggle source
# File lib/sauce/selenium.rb, line 88
def current_url
  raw_driver.current_url
end
method_missing(meth, *args) click to toggle source
# File lib/sauce/selenium.rb, line 80
def method_missing(meth, *args)
  raw_driver.send(meth, *args)
end
quit() click to toggle source
# File lib/sauce/selenium.rb, line 98
def quit
  quit_and_maybe_rescue raw_driver
end
quit_and_maybe_rescue(driver) click to toggle source
# File lib/sauce/selenium.rb, line 102
def quit_and_maybe_rescue driver
  begin
    driver.quit
  rescue Selenium::WebDriver::Error::WebDriverError => e 
    session_finished = e.message.match "has already finished, and can't receive further commands"
    unless @config[:suppress_session_quit_failures] && session_finished
      raise e
    end   
  end
end
session_id() click to toggle source
# File lib/sauce/selenium.rb, line 84
def session_id
  raw_driver.send(:bridge).session_id
end
stop() click to toggle source
# File lib/sauce/selenium.rb, line 92
def stop
  Sauce.logger.debug "Thread #{Thread.current.object_id} quitting driver #{@driver.session_id}"
  quit_and_maybe_rescue @driver
  Sauce.logger.debug "Thread #{Thread.current.object_id} has quit driver #{@driver.session_id}"
end