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
121
122
123
124
125
|
# File 'lib/webrat/selenium/selenium_session.rb', line 121
def check(label_text)
locator = "webrat=#{label_text}"
selenium.wait_for_element locator, :timeout_in_seconds => Webrat.configuration.selenium_response_wait_time
selenium.click locator
end
|
#choose(label_text) ⇒ Object
113
114
115
116
117
|
# File 'lib/webrat/selenium/selenium_session.rb', line 113
def choose(label_text)
locator = "webrat=#{label_text}"
selenium.wait_for_element locator, :timeout_in_seconds => Webrat.configuration.selenium_response_wait_time
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 => Webrat.configuration.selenium_response_wait_time
selenium.click locator
end
|
#click_link(link_text_or_regexp, options = {}) ⇒ Object
81
82
83
84
85
86
|
# File 'lib/webrat/selenium/selenium_session.rb', line 81
def click_link(link_text_or_regexp, options = {})
pattern = adjust_if_regexp(link_text_or_regexp)
locator = "webratlink=#{pattern}"
selenium.wait_for_element locator, :timeout_in_seconds => Webrat.configuration.selenium_response_wait_time
selenium.click locator
end
|
#click_link_within(selector, link_text, options = {}) ⇒ Object
90
91
92
93
94
|
# File 'lib/webrat/selenium/selenium_session.rb', line 90
def click_link_within(selector, link_text, options = {})
locator = "webratlinkwithin=#{selector}|#{link_text}"
selenium.wait_for_element locator, :timeout_in_seconds => Webrat.configuration.selenium_response_wait_time
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 => Webrat.configuration.selenium_response_wait_time
selenium.type(locator, "#{options[:with]}")
end
|
#fire_event(field_identifier, event) ⇒ Object
130
131
132
133
|
# File 'lib/webrat/selenium/selenium_session.rb', line 130
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
135
136
137
138
|
# File 'lib/webrat/selenium/selenium_session.rb', line 135
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
140
141
142
143
|
# File 'lib/webrat/selenium/selenium_session.rb', line 140
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
180
181
182
183
184
185
186
187
188
189
190
191
192
|
# File 'lib/webrat/selenium/selenium_session.rb', line 180
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
98
99
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/webrat/selenium/selenium_session.rb', line 98
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 => Webrat.configuration.selenium_response_wait_time
selenium.select(select_locator, option_text)
end
|
171
172
173
174
175
|
# File 'lib/webrat/selenium/selenium_session.rb', line 171
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
|
# File 'lib/webrat/selenium/selenium_session.rb', line 145
def wait_for(params={})
timeout = params[:timeout] || Webrat.configuration.selenium_response_wait_time
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
raise Webrat::TimeoutError.new(message + " (after #{timeout} sec)")
true
end
|