automate() { || ... }
click to toggle source
check(label_text)
click to toggle source
def check(label_text)
locator = "webrat=#{label_text}"
selenium.wait_for_element locator, :timeout_in_seconds => 5
selenium.click locator
end
choose(label_text)
click to toggle source
def choose(label_text)
locator = "webrat=#{label_text}"
selenium.wait_for_element locator, :timeout_in_seconds => 5
selenium.click locator
end
click_link(link_text_or_regexp, options = {})
click to toggle source
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 = {})
click to toggle source
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()
click to toggle source
def current_url
selenium.location
end
fill_in(field_identifier, options)
click to toggle source
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)
click to toggle source
def fire_event(field_identifier, event)
locator = "webrat=#{Regexp.escape(field_identifier)}"
selenium.fire_event(locator, "#{event}")
end
key_down(field_identifier, key_code)
click to toggle source
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)
click to toggle source
def key_up(field_identifier, key_code)
locator = "webrat=#{Regexp.escape(field_identifier)}"
selenium.key_up(locator, key_code)
end
response()
click to toggle source
def response
SeleniumResponse.new(self, response_body)
end
save_and_open_screengrab()
click to toggle source
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 = {})
click to toggle source
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
selenium()
click to toggle source
def selenium
return $browser if $browser
setup
$browser
end
simulate()
click to toggle source
visit(url)
click to toggle source
def visit(url)
selenium.open(url)
end
wait_for(params={}) { || ... }
click to toggle source
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