davidtrogers-webrat 0.4.4.2 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -1
- data/Gemfile +19 -0
- data/History.txt +99 -9
- data/Rakefile +141 -207
- data/Thorfile +118 -0
- data/lib/webrat.rb +10 -23
- data/lib/webrat/{mechanize.rb → adapters/mechanize.rb} +6 -2
- data/lib/webrat/adapters/merb.rb +11 -0
- data/lib/webrat/adapters/rack.rb +25 -0
- data/lib/webrat/{rails.rb → adapters/rails.rb} +5 -37
- data/lib/webrat/adapters/sinatra.rb +9 -0
- data/lib/webrat/core.rb +0 -1
- data/lib/webrat/core/configuration.rb +22 -18
- data/lib/webrat/core/elements/area.rb +2 -2
- data/lib/webrat/core/elements/element.rb +3 -3
- data/lib/webrat/core/elements/field.rb +113 -31
- data/lib/webrat/core/elements/form.rb +4 -4
- data/lib/webrat/core/elements/label.rb +4 -4
- data/lib/webrat/core/elements/link.rb +8 -7
- data/lib/webrat/core/elements/select_option.rb +15 -2
- data/lib/webrat/core/locators.rb +1 -1
- data/lib/webrat/core/locators/area_locator.rb +3 -3
- data/lib/webrat/core/locators/button_locator.rb +6 -6
- data/lib/webrat/core/locators/field_by_id_locator.rb +3 -3
- data/lib/webrat/core/locators/field_labeled_locator.rb +2 -2
- data/lib/webrat/core/locators/field_named_locator.rb +3 -3
- data/lib/webrat/core/locators/form_locator.rb +1 -1
- data/lib/webrat/core/locators/label_locator.rb +2 -2
- data/lib/webrat/core/locators/link_locator.rb +16 -8
- data/lib/webrat/core/locators/select_option_locator.rb +5 -5
- data/lib/webrat/core/logging.rb +4 -5
- data/lib/webrat/core/matchers/have_content.rb +3 -8
- data/lib/webrat/core/matchers/have_xpath.rb +3 -28
- data/lib/webrat/core/methods.rb +5 -4
- data/lib/webrat/core/mime.rb +11 -22
- data/lib/webrat/core/save_and_open_page.rb +7 -29
- data/lib/webrat/core/scope.rb +17 -2
- data/lib/webrat/core/session.rb +31 -19
- data/lib/webrat/core/xml.rb +41 -84
- data/lib/webrat/integrations/merb.rb +10 -0
- data/lib/webrat/integrations/rails.rb +25 -0
- data/lib/webrat/integrations/rspec-rails.rb +11 -0
- data/lib/webrat/integrations/selenium.rb +11 -0
- data/lib/webrat/rspec-rails.rb +2 -13
- data/lib/webrat/selenium.rb +0 -11
- data/lib/webrat/selenium/application_server_factory.rb +40 -0
- data/lib/webrat/selenium/application_servers.rb +5 -0
- data/lib/webrat/selenium/application_servers/base.rb +46 -0
- data/lib/webrat/selenium/application_servers/external.rb +26 -0
- data/lib/webrat/selenium/application_servers/merb.rb +50 -0
- data/lib/webrat/selenium/application_servers/rails.rb +44 -0
- data/lib/webrat/selenium/application_servers/sinatra.rb +37 -0
- data/lib/webrat/selenium/location_strategy_javascript/label.js +30 -3
- data/lib/webrat/selenium/location_strategy_javascript/webrat.js +1 -0
- data/lib/webrat/selenium/location_strategy_javascript/webratlink.js +24 -4
- data/lib/webrat/selenium/matchers/have_content.rb +22 -10
- data/lib/webrat/selenium/matchers/have_selector.rb +8 -0
- data/lib/webrat/selenium/matchers/have_xpath.rb +8 -0
- data/lib/webrat/selenium/selenium_rc_server.rb +8 -6
- data/lib/webrat/selenium/selenium_session.rb +43 -14
- data/lib/webrat/selenium/silence_stream.rb +2 -2
- data/spec/fakes/{test_session.rb → test_adapter.rb} +4 -5
- data/spec/integration/mechanize/Rakefile +7 -0
- data/spec/integration/mechanize/config.ru +2 -0
- data/spec/integration/mechanize/sample_app.rb +20 -0
- data/spec/integration/mechanize/spec/mechanize_spec.rb +22 -0
- data/spec/integration/mechanize/spec/spec_helper.rb +29 -0
- data/spec/integration/merb/app/controllers/testing.rb +9 -0
- data/spec/integration/merb/app/views/testing/upload.html.erb +9 -0
- data/spec/integration/merb/config/router.rb +1 -0
- data/spec/integration/merb/spec/spec_helper.rb +2 -0
- data/spec/integration/merb/spec/webrat_spec.rb +7 -0
- data/spec/integration/rack/app.rb +89 -0
- data/spec/integration/rack/test/helper.rb +21 -0
- data/spec/integration/rack/test/webrat_rack_test.rb +57 -51
- data/spec/integration/rails/app/controllers/{application.rb → application_controller.rb} +0 -0
- data/spec/integration/rails/app/controllers/webrat_controller.rb +16 -9
- data/spec/integration/rails/app/views/buttons/show.html.erb +0 -2
- data/spec/integration/rails/app/views/links/show.html.erb +2 -1
- data/spec/integration/rails/app/views/webrat/buttons.html.erb +0 -2
- data/spec/integration/rails/app/views/webrat/within.html.erb +3 -0
- data/spec/integration/rails/config/environment.rb +1 -1
- data/spec/integration/rails/config/routes.rb +2 -0
- data/spec/integration/rails/test/integration/button_click_test.rb +12 -26
- data/spec/integration/rails/test/integration/fill_in_test.rb +1 -1
- data/spec/integration/rails/test/integration/link_click_test.rb +8 -2
- data/spec/integration/rails/test/integration/webrat_test.rb +53 -5
- data/spec/integration/rails/test/test_helper.rb +7 -5
- data/spec/integration/sinatra/test/test_helper.rb +3 -2
- data/spec/private/core/configuration_spec.rb +8 -27
- data/spec/private/core/field_spec.rb +14 -16
- data/spec/private/core/link_spec.rb +1 -1
- data/spec/private/core/session_spec.rb +23 -26
- data/spec/private/mechanize/{mechanize_session_spec.rb → mechanize_adapter_spec.rb} +4 -12
- data/spec/private/nokogiri_spec.rb +2 -2
- data/spec/private/rails/{rails_session_spec.rb → rails_adapter_spec.rb} +11 -42
- data/spec/private/selenium/application_servers/rails_spec.rb +26 -0
- data/spec/public/basic_auth_spec.rb +13 -2
- data/spec/public/click_button_spec.rb +10 -12
- data/spec/public/click_link_spec.rb +21 -0
- data/spec/public/fill_in_spec.rb +15 -0
- data/spec/public/matchers/contain_spec.rb +12 -19
- data/spec/public/matchers/have_selector_spec.rb +6 -2
- data/spec/public/matchers/have_xpath_spec.rb +3 -3
- data/spec/public/save_and_open_spec.rb +15 -17
- data/spec/public/select_spec.rb +232 -26
- data/spec/public/selenium/application_server_factory_spec.rb +49 -0
- data/spec/public/selenium/application_servers/external_spec.rb +12 -0
- data/spec/public/selenium/selenium_session_spec.rb +37 -0
- data/spec/spec_helper.rb +5 -1
- data/vendor/selenium-server.jar +0 -0
- metadata +119 -69
- data/.dotest/0001 +0 -34
- data/.dotest/0002 +0 -34
- data/.dotest/binary +0 -1
- data/.dotest/final-commit +0 -1
- data/.dotest/head-name +0 -1
- data/.dotest/info +0 -5
- data/.dotest/keep +0 -1
- data/.dotest/last +0 -1
- data/.dotest/msg +0 -0
- data/.dotest/msg-clean +0 -0
- data/.dotest/next +0 -1
- data/.dotest/onto +0 -1
- data/.dotest/orig-head +0 -1
- data/.dotest/patch +0 -29
- data/.dotest/sign +0 -1
- data/.dotest/utf8 +0 -1
- data/.dotest/whitespace +0 -1
- data/VERSION +0 -1
- data/lib/webrat/core/xml/hpricot.rb +0 -19
- data/lib/webrat/core/xml/nokogiri.rb +0 -76
- data/lib/webrat/core/xml/rexml.rb +0 -24
- data/lib/webrat/merb_session.rb +0 -65
- data/lib/webrat/rack.rb +0 -24
- data/lib/webrat/rack_test.rb +0 -32
- data/lib/webrat/selenium/application_server.rb +0 -73
- data/lib/webrat/selenium/merb_application_server.rb +0 -48
- data/lib/webrat/selenium/rails_application_server.rb +0 -42
- data/lib/webrat/selenium/sinatra_application_server.rb +0 -35
- data/lib/webrat/sinatra.rb +0 -44
- data/spec/integration/rack/rack_app.rb +0 -16
- data/spec/integration/rack/test/test_helper.rb +0 -20
- data/spec/private/core/logging_spec.rb +0 -10
- data/spec/private/merb/merb_session_spec.rb +0 -42
@@ -20,24 +20,24 @@ module Webrat
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def matches_id?(element)
|
23
|
-
(@value.is_a?(Regexp) &&
|
24
|
-
(!@value.is_a?(Regexp) &&
|
23
|
+
(@value.is_a?(Regexp) && element["id"] =~ @value) ||
|
24
|
+
(!@value.is_a?(Regexp) && element["id"] == @value.to_s)
|
25
25
|
end
|
26
26
|
|
27
27
|
def matches_value?(element)
|
28
|
-
|
28
|
+
element["value"] =~ /^\W*#{Regexp.escape(@value.to_s)}/i
|
29
29
|
end
|
30
30
|
|
31
31
|
def matches_html?(element)
|
32
|
-
|
32
|
+
element.inner_html =~ /#{Regexp.escape(@value.to_s)}/i
|
33
33
|
end
|
34
34
|
|
35
35
|
def matches_alt?(element)
|
36
|
-
|
36
|
+
element["alt"] =~ /^\W*#{Regexp.escape(@value.to_s)}/i
|
37
37
|
end
|
38
38
|
|
39
39
|
def button_elements
|
40
|
-
|
40
|
+
@dom.xpath(*ButtonField.xpath_search)
|
41
41
|
end
|
42
42
|
|
43
43
|
def error_message
|
@@ -12,15 +12,15 @@ module Webrat
|
|
12
12
|
def field_element
|
13
13
|
field_elements.detect do |field_element|
|
14
14
|
if @value.is_a?(Regexp)
|
15
|
-
|
15
|
+
field_element["id"] =~ @value
|
16
16
|
else
|
17
|
-
|
17
|
+
field_element["id"] == @value.to_s
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
def field_elements
|
23
|
-
|
23
|
+
@dom.xpath(*Field.xpath_search)
|
24
24
|
end
|
25
25
|
|
26
26
|
def error_message
|
@@ -25,7 +25,7 @@ module Webrat
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def label_elements
|
28
|
-
|
28
|
+
@dom.xpath(*Label.xpath_search)
|
29
29
|
end
|
30
30
|
|
31
31
|
def error_message
|
@@ -33,7 +33,7 @@ module Webrat
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def text(element)
|
36
|
-
str =
|
36
|
+
str = element.inner_text
|
37
37
|
str.gsub!("\n","")
|
38
38
|
str.strip!
|
39
39
|
str.squeeze!(" ")
|
@@ -11,19 +11,19 @@ module Webrat
|
|
11
11
|
|
12
12
|
def field_element
|
13
13
|
field_elements.detect do |field_element|
|
14
|
-
|
14
|
+
field_element["name"] == @value.to_s
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
18
|
def field_elements
|
19
|
-
|
19
|
+
@dom.xpath(*xpath_searches)
|
20
20
|
end
|
21
21
|
|
22
22
|
def xpath_searches
|
23
23
|
if @field_types.any?
|
24
24
|
@field_types.map { |field_type| field_type.xpath_search }.flatten
|
25
25
|
else
|
26
|
-
|
26
|
+
Field.xpath_search
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -17,11 +17,11 @@ module Webrat
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def label_elements
|
20
|
-
|
20
|
+
@dom.xpath(*Label.xpath_search)
|
21
21
|
end
|
22
22
|
|
23
23
|
def text(label_element)
|
24
|
-
str =
|
24
|
+
str = label_element.inner_text
|
25
25
|
str.gsub!("\n","")
|
26
26
|
str.strip!
|
27
27
|
str.squeeze!(" ")
|
@@ -10,7 +10,7 @@ module Webrat
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def link_element
|
13
|
-
matching_links.min { |a, b|
|
13
|
+
matching_links.min { |a, b| a.inner_text.length <=> b.inner_text.length }
|
14
14
|
end
|
15
15
|
|
16
16
|
def matching_links
|
@@ -27,25 +27,33 @@ module Webrat
|
|
27
27
|
matcher = /#{Regexp.escape(@value.to_s)}/i
|
28
28
|
end
|
29
29
|
|
30
|
-
replace_nbsp(
|
31
|
-
replace_nbsp_ref(
|
32
|
-
|
30
|
+
replace_nbsp(link.inner_text) =~ matcher ||
|
31
|
+
replace_nbsp_ref(link.inner_html) =~ matcher ||
|
32
|
+
link["title"] =~ matcher
|
33
33
|
end
|
34
34
|
|
35
35
|
def matches_id?(link)
|
36
36
|
if @value.is_a?(Regexp)
|
37
|
-
|
37
|
+
link["id"] =~ @value ? true : false
|
38
38
|
else
|
39
|
-
|
39
|
+
link["id"] == @value ? true : false
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
43
|
def link_elements
|
44
|
-
|
44
|
+
@dom.xpath(*Link.xpath_search)
|
45
45
|
end
|
46
46
|
|
47
47
|
def replace_nbsp(str)
|
48
|
-
str.
|
48
|
+
if str.respond_to?(:valid_encoding?)
|
49
|
+
if str.valid_encoding?
|
50
|
+
str.gsub(/\xc2\xa0/u, ' ')
|
51
|
+
else
|
52
|
+
str.force_encoding('UTF-8').gsub(/\xc2\xa0/u, ' ')
|
53
|
+
end
|
54
|
+
else
|
55
|
+
str.gsub(/\xc2\xa0/u, ' ')
|
56
|
+
end
|
49
57
|
end
|
50
58
|
|
51
59
|
def replace_nbsp_ref(str)
|
@@ -19,17 +19,17 @@ module Webrat
|
|
19
19
|
|
20
20
|
field.options.detect do |o|
|
21
21
|
if @option_text.is_a?(Regexp)
|
22
|
-
|
22
|
+
o.element.inner_text =~ @option_text
|
23
23
|
else
|
24
|
-
|
24
|
+
o.inner_text == @option_text.to_s
|
25
25
|
end
|
26
26
|
end
|
27
27
|
else
|
28
28
|
option_element = option_elements.detect do |o|
|
29
29
|
if @option_text.is_a?(Regexp)
|
30
|
-
|
30
|
+
o.inner_text =~ @option_text
|
31
31
|
else
|
32
|
-
|
32
|
+
o.inner_text == @option_text.to_s
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
@@ -38,7 +38,7 @@ module Webrat
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def option_elements
|
41
|
-
|
41
|
+
@dom.xpath(*SelectOption.xpath_search)
|
42
42
|
end
|
43
43
|
|
44
44
|
def error_message
|
data/lib/webrat/core/logging.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require "logger"
|
2
|
+
|
1
3
|
module Webrat
|
2
4
|
module Logging #:nodoc:
|
3
5
|
|
@@ -11,12 +13,9 @@ module Webrat
|
|
11
13
|
when :rails
|
12
14
|
defined?(RAILS_DEFAULT_LOGGER) ? RAILS_DEFAULT_LOGGER : nil
|
13
15
|
when :merb
|
14
|
-
Merb.logger
|
16
|
+
::Merb.logger
|
15
17
|
else
|
16
|
-
@logger ||=
|
17
|
-
require "logger"
|
18
|
-
::Logger.new("webrat.log")
|
19
|
-
end
|
18
|
+
@logger ||= ::Logger.new("webrat.log")
|
20
19
|
end
|
21
20
|
end
|
22
21
|
|
@@ -7,17 +7,12 @@ module Webrat
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def matches?(stringlike)
|
10
|
-
|
11
|
-
|
12
|
-
else
|
13
|
-
@document = Webrat.hpricot_document(stringlike)
|
14
|
-
end
|
15
|
-
|
16
|
-
@element = Webrat::XML.inner_text(@document)
|
10
|
+
@document = Webrat::XML.document(stringlike)
|
11
|
+
@element = @document.inner_text
|
17
12
|
|
18
13
|
case @content
|
19
14
|
when String
|
20
|
-
@element.include?(@content)
|
15
|
+
@element.gsub(/\s+/, ' ').include?(@content)
|
21
16
|
when Regexp
|
22
17
|
@element.match(@content)
|
23
18
|
end
|
@@ -1,5 +1,4 @@
|
|
1
|
-
require "webrat/core/xml
|
2
|
-
require "webrat/core/xml/rexml"
|
1
|
+
require "webrat/core/xml"
|
3
2
|
|
4
3
|
module Webrat
|
5
4
|
module Matchers
|
@@ -16,38 +15,14 @@ module Webrat
|
|
16
15
|
matched = matches(stringlike)
|
17
16
|
|
18
17
|
if @options[:count]
|
19
|
-
matched.size == @options[:count] && (!@block || @block.call(matched))
|
18
|
+
matched.size == @options[:count].to_i && (!@block || @block.call(matched))
|
20
19
|
else
|
21
20
|
matched.any? && (!@block || @block.call(matched))
|
22
21
|
end
|
23
22
|
end
|
24
23
|
|
25
24
|
def matches(stringlike)
|
26
|
-
|
27
|
-
nokogiri_matches(stringlike)
|
28
|
-
else
|
29
|
-
rexml_matches(stringlike)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def rexml_matches(stringlike)
|
34
|
-
if REXML::Node === stringlike || Array === stringlike
|
35
|
-
@query = query.map { |q| q.gsub(%r'^//', './/') }
|
36
|
-
else
|
37
|
-
@query = query
|
38
|
-
end
|
39
|
-
|
40
|
-
add_options_conditions_to(@query)
|
41
|
-
|
42
|
-
@document = Webrat.rexml_document(stringlike)
|
43
|
-
|
44
|
-
@query.map do |q|
|
45
|
-
if @document.is_a?(Array)
|
46
|
-
@document.map { |d| REXML::XPath.match(d, q) }
|
47
|
-
else
|
48
|
-
REXML::XPath.match(@document, q)
|
49
|
-
end
|
50
|
-
end.flatten.compact
|
25
|
+
nokogiri_matches(stringlike)
|
51
26
|
end
|
52
27
|
|
53
28
|
def nokogiri_matches(stringlike)
|
data/lib/webrat/core/methods.rb
CHANGED
@@ -16,10 +16,10 @@ module Webrat
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def webrat_session
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
@_webrat_session ||= begin
|
20
|
+
session = Webrat.session_class.new
|
21
|
+
session.adapter = Webrat.adapter_class.new(self) if session.respond_to?(:adapter=)
|
22
|
+
session
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -39,6 +39,7 @@ module Webrat
|
|
39
39
|
:unchecks, :uncheck,
|
40
40
|
:chooses, :choose,
|
41
41
|
:selects, :select,
|
42
|
+
:unselects, :unselect,
|
42
43
|
:attaches_file, :attach_file,
|
43
44
|
:current_page,
|
44
45
|
:current_url,
|
data/lib/webrat/core/mime.rb
CHANGED
@@ -1,29 +1,18 @@
|
|
1
1
|
module Webrat #:nodoc:
|
2
2
|
module MIME #:nodoc:
|
3
|
+
MIME_TYPES = Rack::Mime::MIME_TYPES.dup.merge(
|
4
|
+
".multipart_form" => "multipart/form-data",
|
5
|
+
".url_encoded_form" => "application/x-www-form-urlencoded"
|
6
|
+
).freeze
|
3
7
|
|
4
|
-
def
|
5
|
-
if
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
when :html then "text/html"
|
11
|
-
when :js then "text/javascript"
|
12
|
-
when :css then "text/css"
|
13
|
-
when :ics then "text/calendar"
|
14
|
-
when :csv then "text/csv"
|
15
|
-
when :xml then "application/xml"
|
16
|
-
when :rss then "application/rss+xml"
|
17
|
-
when :atom then "application/atom+xml"
|
18
|
-
when :yaml then "application/x-yaml"
|
19
|
-
when :multipart_form then "multipart/form-data"
|
20
|
-
when :url_encoded_form then "application/x-www-form-urlencoded"
|
21
|
-
when :json then "application/json"
|
22
|
-
else
|
23
|
-
raise ArgumentError.new("Invalid Mime type: #{string_or_symbol.inspect}")
|
24
|
-
end
|
25
|
-
end
|
8
|
+
def mime_type(type)
|
9
|
+
return type if type.nil? || type.to_s.include?("/")
|
10
|
+
type = ".#{type}" unless type.to_s[0] == ?.
|
11
|
+
MIME_TYPES.fetch(type) { |type|
|
12
|
+
raise ArgumentError.new("Invalid Mime type: #{type}")
|
13
|
+
}
|
26
14
|
end
|
27
15
|
|
16
|
+
module_function :mime_type
|
28
17
|
end
|
29
18
|
end
|
@@ -6,44 +6,22 @@ module Webrat
|
|
6
6
|
# Example:
|
7
7
|
# save_and_open_page
|
8
8
|
def save_and_open_page
|
9
|
-
return unless File.exist?(
|
9
|
+
return unless File.exist?(Webrat.configuration.saved_pages_dir)
|
10
10
|
|
11
|
-
filename = "#{
|
11
|
+
filename = "#{Webrat.configuration.saved_pages_dir}/webrat-#{Time.now.to_i}.html"
|
12
12
|
|
13
13
|
File.open(filename, "w") do |f|
|
14
|
-
f.write
|
14
|
+
f.write response_body
|
15
15
|
end
|
16
16
|
|
17
17
|
open_in_browser(filename)
|
18
18
|
end
|
19
19
|
|
20
20
|
def open_in_browser(path) # :nodoc
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
`open #{path}`
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def rewrite_css_and_image_references(response_html) # :nodoc:
|
30
|
-
return response_html unless doc_root
|
31
|
-
response_html.gsub(/"\/(stylesheets|images)/, doc_root + '/\1')
|
32
|
-
end
|
33
|
-
|
34
|
-
def saved_page_dir #:nodoc:
|
35
|
-
File.expand_path(".")
|
36
|
-
end
|
37
|
-
|
38
|
-
def doc_root #:nodoc:
|
39
|
-
nil
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
# accessor for testing
|
45
|
-
def ruby_platform
|
46
|
-
RUBY_PLATFORM
|
21
|
+
require "launchy"
|
22
|
+
Launchy::Browser.run(path)
|
23
|
+
rescue LoadError
|
24
|
+
warn "Sorry, you need to install launchy to open pages: `gem install launchy`"
|
47
25
|
end
|
48
26
|
|
49
27
|
end
|
data/lib/webrat/core/scope.rb
CHANGED
@@ -112,6 +112,21 @@ module Webrat
|
|
112
112
|
|
113
113
|
webrat_deprecate :selects, :select
|
114
114
|
|
115
|
+
# Verifies that a an option element exists on the current page with the specified
|
116
|
+
# text. You can optionally restrict the search to a specific select list by
|
117
|
+
# assigning <tt>options[:from]</tt> the value of the select list's name or
|
118
|
+
# a label. Remove the option's value before the form is submitted.
|
119
|
+
#
|
120
|
+
# Examples:
|
121
|
+
# unselect "January"
|
122
|
+
# unselect "February", :from => "event_month"
|
123
|
+
# unselect "February", :from => "Event Month"
|
124
|
+
def unselect(option_text, options={})
|
125
|
+
select_option(option_text, options[:from]).unchoose
|
126
|
+
end
|
127
|
+
|
128
|
+
webrat_deprecate :unselects, :unselect
|
129
|
+
|
115
130
|
DATE_TIME_SUFFIXES = {
|
116
131
|
:year => '1i',
|
117
132
|
:month => '2i',
|
@@ -312,12 +327,12 @@ module Webrat
|
|
312
327
|
dom = Webrat::XML.html_document(@response_body)
|
313
328
|
end
|
314
329
|
|
315
|
-
Webrat.define_dom_method(@response, dom)
|
330
|
+
Webrat::XML.define_dom_method(@response, dom)
|
316
331
|
return dom
|
317
332
|
end
|
318
333
|
|
319
334
|
def scoped_dom
|
320
|
-
|
335
|
+
@scope.dom.css(@selector).first
|
321
336
|
end
|
322
337
|
|
323
338
|
def locate_field(field_locator, *field_types) #:nodoc:
|