Class: Sauce::Selenium2
- Inherits:
-
Object
show all
- Extended by:
- Forwardable
- Defined in:
- lib/sauce/selenium.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(opts = {}) ⇒ Selenium2
Returns a new instance of Selenium2.
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# 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
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
@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
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(meth, *args) ⇒ Object
80
81
82
|
# File 'lib/sauce/selenium.rb', line 80
def method_missing(meth, *args)
raw_driver.send(meth, *args)
end
|
Instance Attribute Details
#config ⇒ Object
Returns the value of attribute config.
42
43
44
|
# File 'lib/sauce/selenium.rb', line 42
def config
@config
end
|
#driver ⇒ Object
Returns the value of attribute driver.
42
43
44
|
# File 'lib/sauce/selenium.rb', line 42
def driver
@driver
end
|
#raw_driver ⇒ Object
Returns the value of attribute raw_driver.
42
43
44
|
# File 'lib/sauce/selenium.rb', line 42
def raw_driver
@raw_driver
end
|
#watir ⇒ Object
Returns the value of attribute watir.
42
43
44
|
# File 'lib/sauce/selenium.rb', line 42
def watir
@watir
end
|
Class Method Details
.used_at_least_once ⇒ Object
50
51
52
|
# File 'lib/sauce/selenium.rb', line 50
def self.used_at_least_once
@used_at_least_once = true
end
|
.used_at_least_once? ⇒ Boolean
46
47
48
|
# File 'lib/sauce/selenium.rb', line 46
def self.used_at_least_once?
@used_at_least_once || false
end
|
Instance Method Details
#current_url ⇒ Object
88
89
90
|
# File 'lib/sauce/selenium.rb', line 88
def current_url
raw_driver.current_url
end
|
#quit ⇒ Object
98
99
100
|
# File 'lib/sauce/selenium.rb', line 98
def quit
quit_and_maybe_rescue raw_driver
end
|
#quit_and_maybe_rescue(driver) ⇒ Object
102
103
104
105
106
107
108
109
110
111
|
# 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 ⇒ Object
84
85
86
|
# File 'lib/sauce/selenium.rb', line 84
def session_id
raw_driver.send(:bridge).session_id
end
|
#stop ⇒ Object
92
93
94
95
96
|
# 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
|