Class: Webrat::SeleniumSession
Instance Method Summary
collapse
#silence_stream
#doc_root, #open_in_browser, #rewrite_css_and_image_references, #save_and_open_page, #saved_page_dir
Constructor Details
30
31
|
# File 'lib/webrat/selenium/selenium_session.rb', line 30
def initialize(*args) end
|
Instance Method Details
36
37
38
|
# File 'lib/webrat/selenium/selenium_session.rb', line 36
def automate
yield
end
|
#check(label_text) ⇒ Object
Also known as:
uncheck
126
127
128
129
130
|
# File 'lib/webrat/selenium/selenium_session.rb', line 126
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
118
119
120
121
122
|
# File 'lib/webrat/selenium/selenium_session.rb', line 118
def choose(label_text)
locator = "webrat=#{label_text}"
selenium.wait_for_element locator, :timeout_in_seconds => 5
selenium.click locator
end
|
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/webrat/selenium/selenium_session.rb', line 66
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
81
82
83
84
85
86
87
88
89
90
91
|
# File 'lib/webrat/selenium/selenium_session.rb', line 81
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
95
96
97
98
99
|
# File 'lib/webrat/selenium/selenium_session.rb', line 95
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
62
63
64
|
# File 'lib/webrat/selenium/selenium_session.rb', line 62
def current_url
selenium.location
end
|
#fill_in(field_identifier, options) ⇒ Object
46
47
48
49
50
|
# File 'lib/webrat/selenium/selenium_session.rb', line 46
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
135
136
137
138
|
# File 'lib/webrat/selenium/selenium_session.rb', line 135
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
140
141
142
143
|
# File 'lib/webrat/selenium/selenium_session.rb', line 140
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
145
146
147
148
|
# File 'lib/webrat/selenium/selenium_session.rb', line 145
def key_up(field_identifier, key_code)
locator = "webrat=#{Regexp.escape(field_identifier)}"
selenium.key_up(locator, key_code)
end
|
54
55
56
|
# File 'lib/webrat/selenium/selenium_session.rb', line 54
def response
SeleniumResponse.new(self, response_body)
end
|
#response_body ⇒ Object
58
59
60
|
# File 'lib/webrat/selenium/selenium_session.rb', line 58
def response_body selenium.get_html_source
end
|
#save_and_open_screengrab ⇒ Object
197
198
199
200
201
202
203
204
205
206
207
208
209
|
# File 'lib/webrat/selenium/selenium_session.rb', line 197
def save_and_open_screengrab
return unless File.exist?(saved_page_dir)
filename = "#{saved_page_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
103
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/webrat/selenium/selenium_session.rb', line 103
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
|
188
189
190
191
192
|
# File 'lib/webrat/selenium/selenium_session.rb', line 188
def selenium
return $browser if $browser
setup
$browser
end
|
33
34
|
# File 'lib/webrat/selenium/selenium_session.rb', line 33
def simulate
end
|
#visit(url) ⇒ Object
40
41
42
|
# File 'lib/webrat/selenium/selenium_session.rb', line 40
def visit(url)
selenium.open(url)
end
|
#wait_for(params = {}) ⇒ Object
150
151
152
153
154
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
|
# File 'lib/webrat/selenium/selenium_session.rb', line 150
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
error_message += <<-EOS
HTML of the page was:
#{selenium.get_html_source}"
EOS
end
raise Webrat::TimeoutError.new(error_message)
true
end
|