Module: Webrat
- Defined in:
- lib/webrat/core/xml.rb,
lib/webrat.rb,
lib/webrat/rack.rb,
lib/webrat/rails.rb,
lib/webrat/selenium.rb,
lib/webrat/core/mime.rb,
lib/webrat/mechanize.rb,
lib/webrat/core/scope.rb,
lib/webrat/core/logging.rb,
lib/webrat/core/methods.rb,
lib/webrat/core/session.rb,
lib/webrat/merb_session.rb,
lib/webrat/core/locators.rb,
lib/webrat/core/xml/rexml.rb,
lib/webrat/core/xml/hpricot.rb,
lib/webrat/core/xml/nokogiri.rb,
lib/webrat/core/configuration.rb,
lib/webrat/core/elements/area.rb,
lib/webrat/core/elements/form.rb,
lib/webrat/core/elements/link.rb,
lib/webrat/core/elements/field.rb,
lib/webrat/core/elements/label.rb,
lib/webrat/core/elements/element.rb,
lib/webrat/core/locators/locator.rb,
lib/webrat/core/matchers/have_tag.rb,
lib/webrat/core/save_and_open_page.rb,
lib/webrat/core/matchers/have_xpath.rb,
lib/webrat/selenium/selenium_session.rb,
lib/webrat/core/locators/area_locator.rb,
lib/webrat/core/locators/form_locator.rb,
lib/webrat/core/locators/link_locator.rb,
lib/webrat/core/matchers/have_content.rb,
lib/webrat/core/elements/select_option.rb,
lib/webrat/core/locators/field_locator.rb,
lib/webrat/core/locators/label_locator.rb,
lib/webrat/core/matchers/have_selector.rb,
lib/webrat/core/locators/button_locator.rb,
lib/webrat/core/locators/field_by_id_locator.rb,
lib/webrat/core/locators/field_named_locator.rb,
lib/webrat/core/locators/field_labeled_locator.rb,
lib/webrat/core/locators/select_option_locator.rb,
lib/webrat/sinatra.rb
Overview
:nodoc:
Defined Under Namespace
Modules: HaveTagMatcher, Locators, Logging, MIME, Matchers, Methods, SaveAndOpenPage, Selenium, XML Classes: Area, ButtonField, CheckboxField, Configuration, DisabledFieldError, Element, Field, FileField, Form, HiddenField, Label, Link, MechanizeSession, MerbSession, NotFoundError, PageLoadError, PasswordField, RackSession, RadioField, RailsSession, ResetField, Scope, SelectField, SelectOption, SeleniumResponse, SeleniumSession, Session, SinatraSession, TextField, TextareaField, TimeoutError, WebratError
Constant Summary collapse
- VERSION =
'0.4.1'
Class Method Summary collapse
-
.configuration ⇒ Object
:nodoc:.
-
.configure(configuration = Webrat.configuration) {|configuration| ... } ⇒ Object
Configures Webrat.
-
.define_dom_method(object, dom) ⇒ Object
:nodoc:.
- .hpricot_document(stringlike) ⇒ Object
-
.html_nokogiri_document(stringlike) ⇒ Object
:nodoc:.
-
.nokogiri_document(stringlike) ⇒ Object
:nodoc:.
- .on_java? ⇒ Boolean
- .prepare_pid_file(file_path, pid_file_name) ⇒ Object
- .require_xml ⇒ Object
- .rexml_document(stringlike) ⇒ Object
- .session_class ⇒ Object
-
.start_app_server ⇒ Object
:nodoc:.
-
.start_selenium_server ⇒ Object
:nodoc:.
-
.stop_app_server ⇒ Object
:nodoc:.
-
.stop_selenium_server ⇒ Object
:nodoc:.
-
.with_selenium_server ⇒ Object
:nodoc:.
-
.xml_nokogiri_document(stringlike) ⇒ Object
:nodoc:.
Class Method Details
.configuration ⇒ Object
:nodoc:
12 13 14 |
# File 'lib/webrat/core/configuration.rb', line 12 def self.configuration # :nodoc: @@configuration ||= Webrat::Configuration.new end |
.configure(configuration = Webrat.configuration) {|configuration| ... } ⇒ Object
Configures Webrat. If this is not done, Webrat will be created with all of the default settings.
7 8 9 10 |
# File 'lib/webrat/core/configuration.rb', line 7 def self.configure(configuration = Webrat.configuration) yield configuration if block_given? @@configuration = configuration end |
.define_dom_method(object, dom) ⇒ Object
:nodoc:
53 54 55 56 57 |
# File 'lib/webrat/core/xml/nokogiri.rb', line 53 def self.define_dom_method(object, dom) #:nodoc: object..send(:define_method, :dom) do dom end end |
.hpricot_document(stringlike) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/webrat/core/xml/hpricot.rb', line 3 def self.hpricot_document(stringlike) return stringlike.dom if stringlike.respond_to?(:dom) if Hpricot::Doc === stringlike stringlike elsif Hpricot::Elements === stringlike stringlike elsif StringIO === stringlike Hpricot(stringlike.string) elsif stringlike.respond_to?(:body) Hpricot(stringlike.body.to_s) else Hpricot(stringlike.to_s) end end |
.html_nokogiri_document(stringlike) ⇒ Object
:nodoc:
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/webrat/core/xml/nokogiri.rb', line 21 def self.html_nokogiri_document(stringlike) #:nodoc: return stringlike.dom if stringlike.respond_to?(:dom) if Nokogiri::HTML::Document === stringlike stringlike elsif Nokogiri::XML::NodeSet === stringlike stringlike elsif StringIO === stringlike Nokogiri::HTML(stringlike.string) elsif stringlike.respond_to?(:body) Nokogiri::HTML(stringlike.body.to_s) else Nokogiri::HTML(stringlike.to_s) end end |
.nokogiri_document(stringlike) ⇒ Object
:nodoc:
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/webrat/core/xml/nokogiri.rb', line 5 def self.nokogiri_document(stringlike) #:nodoc: return stringlike.dom if stringlike.respond_to?(:dom) if Nokogiri::HTML::Document === stringlike stringlike elsif Nokogiri::XML::NodeSet === stringlike stringlike elsif StringIO === stringlike Nokogiri::HTML(stringlike.string) elsif stringlike.respond_to?(:body) Nokogiri::HTML(stringlike.body.to_s) else Nokogiri::HTML(stringlike.to_s) end end |
.on_java? ⇒ Boolean
26 27 28 |
# File 'lib/webrat.rb', line 26 def self.on_java? RUBY_PLATFORM =~ /java/ end |
.prepare_pid_file(file_path, pid_file_name) ⇒ Object
39 40 41 42 |
# File 'lib/webrat/selenium.rb', line 39 def self.prepare_pid_file(file_path, pid_file_name) FileUtils.mkdir_p File.(file_path) File.("#{file_path}/#{pid_file_name}") end |
.require_xml ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/webrat.rb', line 12 def self.require_xml gem "nokogiri", ">= 1.0.6" if on_java? # We need Nokogiri's CSS to XPath support, even if using REXML and Hpricot for parsing and searching require "nokogiri/css" require "hpricot" require "rexml/document" else require "nokogiri" require "webrat/core/xml/nokogiri" end end |
.rexml_document(stringlike) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/webrat/core/xml/rexml.rb', line 3 def self.rexml_document(stringlike) stringlike = stringlike.body.to_s if stringlike.respond_to?(:body) case stringlike when REXML::Document stringlike.root when REXML::Node, Array stringlike else begin REXML::Document.new(stringlike.to_s).root rescue REXML::ParseException => e if e..include?("second root element") REXML::Document.new("<fake-root-element>#{stringlike}</fake-root-element>").root else raise e end end end end |
.session_class ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/webrat/core/session.rb', line 12 def self.session_class case Webrat.configuration.mode when :rails RailsSession when :merb MerbSession when :selenium SeleniumSession when :rack RackSession when :sinatra SinatraSession when :mechanize MechanizeSession else raise WebratError.new(<<-STR) Unknown Webrat mode: #{Webrat.configuration.mode.inspect} Please ensure you have a Webrat configuration block that specifies a mode in your test_helper.rb, spec_helper.rb, or env.rb (for Cucumber). This configure block supercedes the need to require "webrat/<framework>". For example: Webrat.configure do |config| config.mode = :rails end STR end end |
.start_app_server ⇒ Object
:nodoc:
28 29 30 31 32 |
# File 'lib/webrat/selenium.rb', line 28 def self.start_app_server #:nodoc: pid_file = prepare_pid_file("#{RAILS_ROOT}/tmp/pids", "mongrel_selenium.pid") system("mongrel_rails start -d --chdir=#{RAILS_ROOT} --port=#{Webrat.configuration.application_port} --environment=#{Webrat.configuration.application_environment} --pid #{pid_file} &") TCPSocket.wait_for_service :host => Webrat.configuration.application_address, :port => Webrat.configuration.application_port.to_i end |
.start_selenium_server ⇒ Object
:nodoc:
15 16 17 18 19 20 21 22 |
# File 'lib/webrat/selenium.rb', line 15 def self.start_selenium_server #:nodoc: unless Webrat.configuration.selenium_server_address remote_control = ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0", Webrat.configuration.selenium_server_port, 5) remote_control.jar_file = File.(__FILE__ + "../../../../vendor/selenium-server.jar") remote_control.start :background => true end TCPSocket.wait_for_service :host => (Webrat.configuration.selenium_server_address || "0.0.0.0"), :port => Webrat.configuration.selenium_server_port end |
.stop_app_server ⇒ Object
:nodoc:
34 35 36 37 |
# File 'lib/webrat/selenium.rb', line 34 def self.stop_app_server #:nodoc: pid_file = File.(RAILS_ROOT + "/tmp/pids/mongrel_selenium.pid") system "mongrel_rails stop -c #{RAILS_ROOT} --pid #{pid_file}" end |
.stop_selenium_server ⇒ Object
:nodoc:
24 25 26 |
# File 'lib/webrat/selenium.rb', line 24 def self.stop_selenium_server #:nodoc: ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0", Webrat.configuration.selenium_server_port, 5).stop unless Webrat.configuration.selenium_server_address end |
.with_selenium_server ⇒ Object
:nodoc:
9 10 11 12 13 |
# File 'lib/webrat/selenium.rb', line 9 def self.with_selenium_server #:nodoc: start_selenium_server yield stop_selenium_server end |
.xml_nokogiri_document(stringlike) ⇒ Object
:nodoc:
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/webrat/core/xml/nokogiri.rb', line 37 def self.xml_nokogiri_document(stringlike) #:nodoc: return stringlike.dom if stringlike.respond_to?(:dom) if Nokogiri::HTML::Document === stringlike stringlike elsif Nokogiri::XML::NodeSet === stringlike stringlike elsif StringIO === stringlike Nokogiri::XML(stringlike.string) elsif stringlike.respond_to?(:body) Nokogiri::XML(stringlike.body.to_s) else Nokogiri::XML(stringlike.to_s) end end |