whitespace changes
This commit is contained in:
parent
e46df8c6f9
commit
f3a12adaa9
@ -53,7 +53,7 @@ module Webrat
|
||||
|
||||
# Set the key that Selenium uses to determine the browser running. Default *firefox
|
||||
attr_accessor :selenium_browser_key
|
||||
|
||||
|
||||
# Set the timeout for waiting for the browser process to start
|
||||
attr_accessor :selenium_browser_startup_timeout
|
||||
|
||||
|
@ -2,7 +2,7 @@ module Webrat
|
||||
module Selenium
|
||||
|
||||
class ApplicationServer
|
||||
|
||||
|
||||
include Webrat::Selenium::SilenceStream
|
||||
|
||||
def self.boot
|
||||
|
@ -2,7 +2,7 @@ module Webrat
|
||||
module Selenium
|
||||
|
||||
class SeleniumRCServer
|
||||
|
||||
|
||||
include Webrat::Selenium::SilenceStream
|
||||
|
||||
def self.boot
|
||||
@ -32,8 +32,8 @@ module Webrat
|
||||
def remote_control
|
||||
return @remote_control if @remote_control
|
||||
|
||||
@remote_control = ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0",
|
||||
Webrat.configuration.selenium_server_port,
|
||||
@remote_control = ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0",
|
||||
Webrat.configuration.selenium_server_port,
|
||||
Webrat.configuration.selenium_browser_startup_timeout)
|
||||
@remote_control.jar_file = jar_path
|
||||
|
||||
|
@ -5,61 +5,61 @@ require "webrat/selenium/application_server"
|
||||
module Webrat
|
||||
class TimeoutError < WebratError
|
||||
end
|
||||
|
||||
|
||||
class SeleniumResponse
|
||||
attr_reader :body
|
||||
attr_reader :session
|
||||
|
||||
|
||||
def initialize(session, body)
|
||||
@session = session
|
||||
@body = body
|
||||
end
|
||||
|
||||
|
||||
def selenium
|
||||
session.selenium
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class SeleniumSession
|
||||
include Webrat::SaveAndOpenPage
|
||||
include Webrat::Selenium::SilenceStream
|
||||
|
||||
|
||||
def initialize(*args) # :nodoc:
|
||||
end
|
||||
|
||||
|
||||
def simulate
|
||||
end
|
||||
|
||||
|
||||
def automate
|
||||
yield
|
||||
end
|
||||
|
||||
|
||||
def visit(url)
|
||||
selenium.open(url)
|
||||
end
|
||||
|
||||
|
||||
webrat_deprecate :visits, :visit
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
webrat_deprecate :fills_in, :fill_in
|
||||
|
||||
|
||||
def response
|
||||
SeleniumResponse.new(self, response_body)
|
||||
end
|
||||
|
||||
|
||||
def response_body #:nodoc:
|
||||
selenium.get_html_source
|
||||
end
|
||||
|
||||
|
||||
def current_url
|
||||
selenium.location
|
||||
end
|
||||
|
||||
|
||||
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
|
||||
@ -68,159 +68,159 @@ module Webrat
|
||||
end
|
||||
pattern ||= '*'
|
||||
locator = "button=#{pattern}"
|
||||
|
||||
|
||||
selenium.wait_for_element locator, :timeout_in_seconds => 5
|
||||
selenium.click locator
|
||||
end
|
||||
|
||||
|
||||
webrat_deprecate :clicks_button, :click_button
|
||||
|
||||
|
||||
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 => 5
|
||||
selenium.click locator
|
||||
end
|
||||
|
||||
|
||||
webrat_deprecate :clicks_link, :click_link
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
webrat_deprecate :clicks_link_within, :click_link_within
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
webrat_deprecate :selects, :select
|
||||
|
||||
|
||||
def choose(label_text)
|
||||
locator = "webrat=#{label_text}"
|
||||
selenium.wait_for_element locator, :timeout_in_seconds => 5
|
||||
selenium.click locator
|
||||
end
|
||||
|
||||
|
||||
webrat_deprecate :chooses, :choose
|
||||
|
||||
|
||||
def check(label_text)
|
||||
locator = "webrat=#{label_text}"
|
||||
selenium.wait_for_element locator, :timeout_in_seconds => 5
|
||||
selenium.click locator
|
||||
end
|
||||
alias_method :uncheck, :check
|
||||
|
||||
|
||||
webrat_deprecate :checks, :check
|
||||
|
||||
|
||||
def fire_event(field_identifier, event)
|
||||
locator = "webrat=#{Regexp.escape(field_identifier)}"
|
||||
selenium.fire_event(locator, "#{event}")
|
||||
end
|
||||
|
||||
|
||||
def key_down(field_identifier, key_code)
|
||||
locator = "webrat=#{Regexp.escape(field_identifier)}"
|
||||
selenium.key_down(locator, key_code)
|
||||
end
|
||||
|
||||
|
||||
def key_up(field_identifier, key_code)
|
||||
locator = "webrat=#{Regexp.escape(field_identifier)}"
|
||||
selenium.key_up(locator, key_code)
|
||||
end
|
||||
|
||||
|
||||
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
|
||||
raise e unless yieldable_exceptions.include?(e.class)
|
||||
end
|
||||
|
||||
|
||||
return value if value
|
||||
|
||||
|
||||
sleep 0.25
|
||||
end
|
||||
|
||||
|
||||
raise Webrat::TimeoutError.new(message + " (after #{timeout} sec)")
|
||||
true
|
||||
end
|
||||
|
||||
|
||||
def selenium
|
||||
return $browser if $browser
|
||||
setup
|
||||
$browser
|
||||
end
|
||||
|
||||
|
||||
webrat_deprecate :browser, :selenium
|
||||
|
||||
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
def yieldable_exceptions
|
||||
return [::Selenium::CommandError, Webrat::WebratError] unless lib_defined?(::Spec::Expectations::ExpectationNotMetError)
|
||||
[::Spec::Expectations::ExpectationNotMetError, ::Selenium::CommandError, Webrat::WebratError]
|
||||
end
|
||||
|
||||
|
||||
protected
|
||||
def lib_defined?(library)
|
||||
defined?(library)
|
||||
end
|
||||
|
||||
|
||||
def setup #:nodoc:
|
||||
Webrat::Selenium::SeleniumRCServer.boot
|
||||
Webrat::Selenium::ApplicationServer.boot
|
||||
|
||||
|
||||
create_browser
|
||||
$browser.start
|
||||
|
||||
|
||||
extend_selenium
|
||||
define_location_strategies
|
||||
$browser.window_maximize
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
def create_browser
|
||||
$browser = ::Selenium::Client::Driver.new(Webrat.configuration.selenium_server_address || "localhost",
|
||||
Webrat.configuration.selenium_server_port, Webrat.configuration.selenium_browser_key, "http://#{Webrat.configuration.application_address}:#{Webrat.configuration.application_port}")
|
||||
$browser.set_speed(0) unless Webrat.configuration.selenium_server_address
|
||||
|
||||
|
||||
at_exit do
|
||||
silence_stream(STDOUT) do
|
||||
$browser.stop
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def adjust_if_regexp(text_or_regexp) #:nodoc:
|
||||
if text_or_regexp.is_a?(Regexp)
|
||||
"evalregex:#{text_or_regexp.inspect}"
|
||||
@ -228,13 +228,13 @@ module Webrat
|
||||
"evalregex:/#{text_or_regexp}/"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def extend_selenium #:nodoc:
|
||||
extensions_file = File.join(File.dirname(__FILE__), "selenium_extensions.js")
|
||||
extenions_js = File.read(extensions_file)
|
||||
selenium.get_eval(extenions_js)
|
||||
end
|
||||
|
||||
|
||||
def define_location_strategies #:nodoc:
|
||||
Dir[File.join(File.dirname(__FILE__), "location_strategy_javascript", "*.js")].sort.each do |file|
|
||||
strategy_js = File.read(file)
|
||||
|
@ -12,7 +12,7 @@ module Webrat
|
||||
ensure
|
||||
stream.reopen(old_stream)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -5,35 +5,35 @@ class FakeModel
|
||||
end
|
||||
|
||||
class WebratController < ApplicationController
|
||||
|
||||
|
||||
def form
|
||||
end
|
||||
|
||||
|
||||
def submit
|
||||
render :text => "OK <a href='/' id='link_id'>Test Link Text</a>"
|
||||
end
|
||||
|
||||
|
||||
def internal_redirect
|
||||
redirect_to submit_path
|
||||
end
|
||||
|
||||
|
||||
def infinite_redirect
|
||||
redirect_to infinite_redirect_path
|
||||
end
|
||||
|
||||
|
||||
def external_redirect
|
||||
redirect_to "http://google.com"
|
||||
end
|
||||
|
||||
|
||||
def before_redirect_form
|
||||
end
|
||||
|
||||
|
||||
def redirect_to_show_params
|
||||
redirect_to show_params_path(:custom_param => "123")
|
||||
end
|
||||
|
||||
|
||||
def show_params
|
||||
render :text => params.to_json
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
@ -42,7 +42,7 @@ class ButtonClickTest < ActionController::IntegrationTest
|
||||
visit buttons_path
|
||||
click_button "button_image_text"
|
||||
end
|
||||
|
||||
|
||||
# <input type="button" ...>
|
||||
test "should click image with type button by id" do
|
||||
visit buttons_path
|
||||
@ -76,5 +76,5 @@ class ButtonClickTest < ActionController::IntegrationTest
|
||||
visit buttons_path
|
||||
click_button "input_image_alt"
|
||||
end
|
||||
|
||||
|
||||
end
|
@ -12,7 +12,7 @@ class LinkClickTest < ActionController::IntegrationTest
|
||||
click_link "link_by_id"
|
||||
assert_contain("Link:link_by_id")
|
||||
end
|
||||
|
||||
|
||||
test "should click link by title" do
|
||||
visit links_path
|
||||
click_link "LinkByTitle"
|
||||
|
@ -92,11 +92,11 @@ describe Webrat::Configuration do
|
||||
it 'should default selenium browser key to *firefox' do
|
||||
@config.selenium_browser_key.should == '*firefox'
|
||||
end
|
||||
|
||||
|
||||
it 'should default selenium browser startup timeout to 5 seconds' do
|
||||
@config.selenium_browser_startup_timeout.should == 5
|
||||
end
|
||||
|
||||
|
||||
it 'should allow overriding of the browser startup timeout' do
|
||||
@config.selenium_browser_startup_timeout = 10
|
||||
@config.selenium_browser_startup_timeout.should == 10
|
||||
|
@ -94,7 +94,7 @@ describe "have_xpath" do
|
||||
node.should have_xpath("//a[@href='http://example.org']")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
it "should allow descendant selectors in the block" do
|
||||
@body.should have_xpath("//div[@id='main']") do |node|
|
||||
node.should have_xpath("//ul//a")
|
||||
|
@ -4,22 +4,22 @@ require "webrat/selenium/silence_stream"
|
||||
require "webrat/selenium/selenium_session"
|
||||
|
||||
describe Webrat::SeleniumSession do
|
||||
|
||||
|
||||
before :each do
|
||||
Webrat.configuration.mode = :selenium
|
||||
@selenium = Webrat::SeleniumSession.new()
|
||||
end
|
||||
|
||||
|
||||
it "should provide a list yieldable exceptions without spec if spec isn't defined" do
|
||||
@selenium.should_receive(:lib_defined?).with(::Spec::Expectations::ExpectationNotMetError).and_return(false)
|
||||
@selenium.yieldable_exceptions.should == [::Selenium::CommandError, Webrat::WebratError]
|
||||
end
|
||||
|
||||
|
||||
it "should provide a list yieldable exceptions with rspec" do
|
||||
@selenium.should_receive(:lib_defined?).with(::Spec::Expectations::ExpectationNotMetError).and_return(true)
|
||||
@selenium.yieldable_exceptions.should == [::Spec::Expectations::ExpectationNotMetError, ::Selenium::CommandError, Webrat::WebratError]
|
||||
end
|
||||
|
||||
|
||||
it "should throw timeout instead of spec expectionnotmet error" do
|
||||
begin
|
||||
@selenium.wait_for(:timeout => 0.1) do
|
||||
@ -29,7 +29,7 @@ describe Webrat::SeleniumSession do
|
||||
rescue Webrat::TimeoutError
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
it "should throw timeout instead of selenium command error" do
|
||||
begin
|
||||
@selenium.wait_for(:timeout => 0.1) do
|
||||
@ -39,7 +39,7 @@ describe Webrat::SeleniumSession do
|
||||
rescue Webrat::TimeoutError
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
it "should throw timeout instead of webrat error" do
|
||||
begin
|
||||
@selenium.wait_for(:timeout => 0.1) do
|
||||
@ -49,5 +49,5 @@ describe Webrat::SeleniumSession do
|
||||
rescue Webrat::TimeoutError
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user