Module: Webrat
- Defined in:
- lib/webrat/core/xml.rb,
lib/webrat.rb,
lib/webrat/merb.rb,
lib/webrat/rack.rb,
lib/webrat/rails.rb,
lib/webrat/sinatra.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/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/rails/redirect_actions.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
Overview
For Rails before dev.rubyonrails.org/ticket/10497 was committed
Defined Under Namespace
Modules: HaveTagMatcher, Locators, Logging, MIME, Matchers, Methods, RedirectActions, 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.3.2.1'
Class Method Summary collapse
-
.configuration ⇒ Object
:nodoc:.
-
.configure(configuration = Webrat::Configuration.new) {|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
- .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:
10 11 12 |
# File 'lib/webrat/core/configuration.rb', line 10 def self.configuration # :nodoc: @@configuration ||= Webrat::Configuration.new end |
.configure(configuration = Webrat::Configuration.new) {|configuration| ... } ⇒ Object
Configures Webrat. If this is not done, Webrat will be created with all of the default settings.
5 6 7 8 |
# File 'lib/webrat/core/configuration.rb', line 5 def self.configure(configuration = Webrat::Configuration.new) 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.parse(stringlike.string) elsif stringlike.respond_to?(:body) Nokogiri.parse(stringlike.body.to_s) else Nokogiri.parse(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 |
.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
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/webrat/core/session.rb', line 11 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("Unknown Webrat mode: #{Webrat.configuration.mode.inspect}") end end |
.start_app_server ⇒ Object
:nodoc:
29 30 31 32 33 |
# File 'lib/webrat/selenium.rb', line 29 def self.start_app_server #:nodoc: pid_file = File.(RAILS_ROOT + "/tmp/pids/mongrel_selenium.pid") system("mongrel_rails start -d --chdir=#{RAILS_ROOT} --port=3001 --environment=selenium --pid #{pid_file} &") TCPSocket.wait_for_service :host => "0.0.0.0", :port => 3001 end |
.start_selenium_server ⇒ Object
:nodoc:
17 18 19 20 21 22 |
# File 'lib/webrat/selenium.rb', line 17 def self.start_selenium_server #:nodoc: remote_control = ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0", 4444, 5) remote_control.jar_file = File.(__FILE__ + "../../../../vendor/selenium-server.jar") remote_control.start :background => true TCPSocket.wait_for_service :host => "0.0.0.0", :port => 4444 end |
.stop_app_server ⇒ Object
:nodoc:
35 36 37 38 |
# File 'lib/webrat/selenium.rb', line 35 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 27 |
# File 'lib/webrat/selenium.rb', line 24 def self.stop_selenium_server #:nodoc: remote_control = ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0", 4444, 5) remote_control.stop end |
.with_selenium_server ⇒ Object
:nodoc:
11 12 13 14 15 |
# File 'lib/webrat/selenium.rb', line 11 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 |