Class: Webrat::SeleniumSession
Instance Method Summary
collapse
#silence_stream
#open_in_browser, #save_and_open_page
Constructor Details
35
36
|
# File 'lib/webrat/selenium/selenium_session.rb', line 35
def initialize(*args) end
|
Instance Method Details
41
42
43
|
# File 'lib/webrat/selenium/selenium_session.rb', line 41
def automate
yield
end
|
#check(label_text) ⇒ Object
Also known as:
uncheck
131
132
133
134
135
|
# File 'lib/webrat/selenium/selenium_session.rb', line 131
def check(label_text)
locator = "webrat=#{label_text}"
selenium.wait_for_element locator, :timeout_in_seconds => 5
selenium.click locator
end
|
#choose(label_text) ⇒ Object
123
124
125
126
127
|
# File 'lib/webrat/selenium/selenium_session.rb', line 123
def choose(label_text)
locator = "webrat=#{label_text}"
selenium.wait_for_element locator, :timeout_in_seconds => 5
selenium.click locator
end
|
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/webrat/selenium/selenium_session.rb', line 71
def click_button(button_text_or_regexp = nil, options = {})
if button_text_or_regexp.is_a?(Hash) && options == {}
pattern, options = nil, button_text_or_regexp
elsif button_text_or_regexp
pattern = adjust_if_regexp(button_text_or_regexp)
end
pattern ||= '*'
locator = "button=#{pattern}"
selenium.wait_for_element locator, :timeout_in_seconds => 5
selenium.click locator
end
|
#click_link(link_text_or_regexp, options = {}) ⇒ Object
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/webrat/selenium/selenium_session.rb', line 86
def click_link(link_text_or_regexp, options = {})
if link_text_or_regexp.is_a?(Regexp)
pattern = "evalregex:#{link_text_or_regexp.inspect}"
else
pattern = link_text_or_regexp.to_s
end
locator = "webratlink=#{pattern}"
selenium.wait_for_element locator, :timeout_in_seconds => 5
selenium.click locator
end
|
#click_link_within(selector, link_text, options = {}) ⇒ Object
100
101
102
103
104
|
# File 'lib/webrat/selenium/selenium_session.rb', line 100
def click_link_within(selector, link_text, options = {})
locator = "webratlinkwithin=#{selector}|#{link_text}"
selenium.wait_for_element locator, :timeout_in_seconds => 5
selenium.click locator
end
|
#current_url ⇒ Object
67
68
69
|
# File 'lib/webrat/selenium/selenium_session.rb', line 67
def current_url
selenium.location
end
|
#fill_in(field_identifier, options) ⇒ Object
51
52
53
54
55
|
# File 'lib/webrat/selenium/selenium_session.rb', line 51
def fill_in(field_identifier, options)
locator = "webrat=#{field_identifier}"
selenium.wait_for_element locator, :timeout_in_seconds => 5
selenium.type(locator, "#{options[:with]}")
end
|
#fire_event(field_identifier, event) ⇒ Object
140
141
142
143
|
# File 'lib/webrat/selenium/selenium_session.rb', line 140
def fire_event(field_identifier, event)
locator = "webrat=#{Regexp.escape(field_identifier)}"
selenium.fire_event(locator, "#{event}")
end
|
#key_down(field_identifier, key_code) ⇒ Object
145
146
147
148
|
# File 'lib/webrat/selenium/selenium_session.rb', line 145
def key_down(field_identifier, key_code)
locator = "webrat=#{Regexp.escape(field_identifier)}"
selenium.key_down(locator, key_code)
end
|
#key_up(field_identifier, key_code) ⇒ Object
150
151
152
153
|
# File 'lib/webrat/selenium/selenium_session.rb', line 150
def key_up(field_identifier, key_code)
locator = "webrat=#{Regexp.escape(field_identifier)}"
selenium.key_up(locator, key_code)
end
|
59
60
61
|
# File 'lib/webrat/selenium/selenium_session.rb', line 59
def response
SeleniumResponse.new(self, response_body)
end
|
#response_body ⇒ Object
63
64
65
|
# File 'lib/webrat/selenium/selenium_session.rb', line 63
def response_body selenium.get_html_source
end
|
#save_and_open_screengrab ⇒ Object
202
203
204
205
206
207
208
209
210
211
212
213
214
|
# File 'lib/webrat/selenium/selenium_session.rb', line 202
def save_and_open_screengrab
return unless File.exist?(Webrat.configuration.saved_pages_dir)
filename = "#{Webrat.configuration.saved_pages_dir}/webrat-#{Time.now.to_i}.png"
if $browser.chrome_backend?
$browser.capture_entire_page_screenshot(filename, '')
else
$browser.capture_screenshot(filename)
end
open_in_browser(filename)
end
|
#select(option_text, options = {}) ⇒ Object
108
109
110
111
112
113
114
115
116
117
118
119
|
# File 'lib/webrat/selenium/selenium_session.rb', line 108
def select(option_text, options = {})
id_or_name_or_label = options[:from]
if id_or_name_or_label
select_locator = "webrat=#{id_or_name_or_label}"
else
select_locator = "webratselectwithoption=#{option_text}"
end
selenium.wait_for_element select_locator, :timeout_in_seconds => 5
selenium.select(select_locator, option_text)
end
|
193
194
195
196
197
|
# File 'lib/webrat/selenium/selenium_session.rb', line 193
def selenium
return $browser if $browser
setup
$browser
end
|
38
39
|
# File 'lib/webrat/selenium/selenium_session.rb', line 38
def simulate
end
|
#visit(url) ⇒ Object
45
46
47
|
# File 'lib/webrat/selenium/selenium_session.rb', line 45
def visit(url)
selenium.open(url)
end
|
#wait_for(params = {}) ⇒ Object
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
# File 'lib/webrat/selenium/selenium_session.rb', line 155
def wait_for(params={})
timeout = params[:timeout] || 5
message = params[:message] || "Timeout exceeded"
begin_time = Time.now
while (Time.now - begin_time) < timeout
value = nil
begin
value = yield
rescue Exception => e
unless is_ignorable_wait_for_exception?(e)
raise e
end
end
return value if value
sleep 0.25
end
error_message = "#{message} (after #{timeout} sec)"
if $browser && Webrat.configuration.selenium_verbose_output
error_message += <<-EOS
HTML of the page was:
#{selenium.get_html_source}"
EOS
end
raise Webrat::TimeoutError.new(error_message)
true
end
|