diabolo-webrat 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. data/History.txt +22 -3
  2. data/Rakefile +6 -1
  3. data/lib/webrat/core/configuration.rb +4 -4
  4. data/lib/webrat/core/elements/area.rb +7 -7
  5. data/lib/webrat/core/elements/element.rb +11 -11
  6. data/lib/webrat/core/elements/field.rb +50 -50
  7. data/lib/webrat/core/elements/form.rb +17 -17
  8. data/lib/webrat/core/elements/label.rb +6 -6
  9. data/lib/webrat/core/elements/link.rb +13 -11
  10. data/lib/webrat/core/elements/select_option.rb +9 -9
  11. data/lib/webrat/core/locators/area_locator.rb +10 -10
  12. data/lib/webrat/core/locators/button_locator.rb +13 -13
  13. data/lib/webrat/core/locators/field_by_id_locator.rb +8 -8
  14. data/lib/webrat/core/locators/field_labeled_locator.rb +10 -10
  15. data/lib/webrat/core/locators/field_locator.rb +7 -7
  16. data/lib/webrat/core/locators/field_named_locator.rb +10 -10
  17. data/lib/webrat/core/locators/form_locator.rb +6 -6
  18. data/lib/webrat/core/locators/label_locator.rb +8 -8
  19. data/lib/webrat/core/locators/link_locator.rb +11 -12
  20. data/lib/webrat/core/locators/locator.rb +5 -5
  21. data/lib/webrat/core/locators/select_option_locator.rb +11 -11
  22. data/lib/webrat/core/locators.rb +2 -2
  23. data/lib/webrat/core/logging.rb +3 -3
  24. data/lib/webrat/core/matchers/have_content.rb +12 -12
  25. data/lib/webrat/core/matchers/have_selector.rb +9 -9
  26. data/lib/webrat/core/matchers/have_tag.rb +4 -4
  27. data/lib/webrat/core/matchers/have_xpath.rb +24 -24
  28. data/lib/webrat/core/methods.rb +9 -9
  29. data/lib/webrat/core/mime.rb +3 -3
  30. data/lib/webrat/core/save_and_open_page.rb +9 -9
  31. data/lib/webrat/core/scope.rb +51 -51
  32. data/lib/webrat/core/session.rb +7 -7
  33. data/lib/webrat/core/xml/hpricot.rb +3 -3
  34. data/lib/webrat/core/xml/nokogiri.rb +11 -11
  35. data/lib/webrat/core/xml/rexml.rb +3 -3
  36. data/lib/webrat/core/xml.rb +16 -16
  37. data/lib/webrat/core_extensions/blank.rb +1 -1
  38. data/lib/webrat/core_extensions/deprecate.rb +1 -1
  39. data/lib/webrat/core_extensions/detect_mapped.rb +4 -4
  40. data/lib/webrat/core_extensions/meta_class.rb +1 -1
  41. data/lib/webrat/mechanize.rb +9 -9
  42. data/lib/webrat/merb.rb +1 -1
  43. data/lib/webrat/merb_session.rb +10 -10
  44. data/lib/webrat/rails.rb +2 -2
  45. data/lib/webrat/rspec-rails.rb +2 -2
  46. data/lib/webrat/selenium/matchers/have_content.rb +4 -4
  47. data/lib/webrat/selenium/matchers/have_selector.rb +4 -4
  48. data/lib/webrat/selenium/matchers/have_tag.rb +16 -16
  49. data/lib/webrat/selenium/matchers/have_xpath.rb +4 -4
  50. data/lib/webrat/selenium/matchers.rb +1 -1
  51. data/lib/webrat/selenium/selenium_session.rb +12 -18
  52. data/lib/webrat/selenium.rb +3 -77
  53. data/lib/webrat.rb +4 -4
  54. metadata +1 -1
@@ -2,7 +2,7 @@ require "webrat/core/matchers/have_xpath"
2
2
 
3
3
  module Webrat
4
4
  module Matchers
5
-
5
+
6
6
  class HaveSelector < HaveXpath #:nodoc:
7
7
  # ==== Returns
8
8
  # String:: The failure message.
@@ -15,7 +15,7 @@ module Webrat
15
15
  def negative_failure_message
16
16
  "expected following output to omit a #{tag_inspect}:\n#{@document}"
17
17
  end
18
-
18
+
19
19
  def tag_inspect
20
20
  options = @options.dup
21
21
  count = options.delete(:count)
@@ -40,9 +40,9 @@ module Webrat
40
40
  ast.to_xpath
41
41
  end.first
42
42
  end
43
-
43
+
44
44
  end
45
-
45
+
46
46
  # Matches HTML content against a CSS 3 selector.
47
47
  #
48
48
  # ==== Parameters
@@ -54,21 +54,21 @@ module Webrat
54
54
  HaveSelector.new(name, attributes, &block)
55
55
  end
56
56
  alias_method :match_selector, :have_selector
57
-
58
-
57
+
58
+
59
59
  # Asserts that the body of the response contains
60
60
  # the supplied selector
61
61
  def assert_have_selector(name, attributes = {}, &block)
62
62
  matcher = HaveSelector.new(name, attributes, &block)
63
63
  assert matcher.matches?(response_body), matcher.failure_message
64
64
  end
65
-
65
+
66
66
  # Asserts that the body of the response
67
67
  # does not contain the supplied string or regepx
68
68
  def assert_have_no_selector(name, attributes = {}, &block)
69
69
  matcher = HaveSelector.new(name, attributes, &block)
70
70
  assert !matcher.matches?(response_body), matcher.negative_failure_message
71
71
  end
72
-
72
+
73
73
  end
74
- end
74
+ end
@@ -6,16 +6,16 @@ module Webrat
6
6
  def have_tag(*args, &block)
7
7
  have_selector(*args, &block)
8
8
  end
9
-
9
+
10
10
  alias_method :match_tag, :have_tag
11
-
11
+
12
12
  def assert_have_tag(*args, &block)
13
13
  assert_have_selector(*args, &block)
14
14
  end
15
-
15
+
16
16
  def assert_have_no_tag(*args, &block)
17
17
  assert_have_no_selector(*args, &block)
18
18
  end
19
19
 
20
20
  end
21
- end
21
+ end
@@ -3,25 +3,25 @@ require "webrat/core/xml/rexml"
3
3
 
4
4
  module Webrat
5
5
  module Matchers
6
-
6
+
7
7
  class HaveXpath #:nodoc:
8
8
  def initialize(expected, options = {}, &block)
9
9
  @expected = expected
10
10
  @options = options
11
11
  @block = block
12
12
  end
13
-
13
+
14
14
  def matches?(stringlike, &block)
15
15
  @block ||= block
16
16
  matched = matches(stringlike)
17
-
17
+
18
18
  if @options[:count]
19
19
  matched.size == @options[:count] && (!@block || @block.call(matched))
20
20
  else
21
21
  matched.any? && (!@block || @block.call(matched))
22
22
  end
23
23
  end
24
-
24
+
25
25
  def matches(stringlike)
26
26
  if Webrat.configuration.parse_with_nokogiri?
27
27
  nokogiri_matches(stringlike)
@@ -29,7 +29,7 @@ module Webrat
29
29
  rexml_matches(stringlike)
30
30
  end
31
31
  end
32
-
32
+
33
33
  def rexml_matches(stringlike)
34
34
  if REXML::Node === stringlike || Array === stringlike
35
35
  @query = query.map { |q| q.gsub(%r'//', './') }
@@ -49,48 +49,48 @@ module Webrat
49
49
  end
50
50
  end.flatten.compact
51
51
  end
52
-
52
+
53
53
  def nokogiri_matches(stringlike)
54
54
  if Nokogiri::XML::NodeSet === stringlike
55
55
  @query = query.gsub(%r'//', './')
56
56
  else
57
57
  @query = query
58
58
  end
59
-
59
+
60
60
  add_options_conditions_to(@query)
61
-
61
+
62
62
  @document = Webrat::XML.document(stringlike)
63
63
  @document.xpath(*@query)
64
64
  end
65
-
65
+
66
66
  def add_options_conditions_to(query)
67
67
  add_attributes_conditions_to(query)
68
68
  add_content_condition_to(query)
69
69
  end
70
-
70
+
71
71
  def add_attributes_conditions_to(query)
72
72
  attribute_conditions = []
73
-
73
+
74
74
  @options.each do |key, value|
75
75
  next if [:content, :count].include?(key)
76
76
  attribute_conditions << "@#{key} = #{xpath_escape(value)}"
77
77
  end
78
-
78
+
79
79
  if attribute_conditions.any?
80
80
  query << "[#{attribute_conditions.join(' and ')}]"
81
81
  end
82
82
  end
83
-
83
+
84
84
  def add_content_condition_to(query)
85
85
  if @options[:content]
86
86
  query << "[contains(., #{xpath_escape(@options[:content])})]"
87
87
  end
88
88
  end
89
-
89
+
90
90
  def query
91
91
  @expected
92
92
  end
93
-
93
+
94
94
  # ==== Returns
95
95
  # String:: The failure message.
96
96
  def failure_message
@@ -102,15 +102,15 @@ module Webrat
102
102
  def negative_failure_message
103
103
  "expected following text to not match xpath #{@expected}:\n#{@document}"
104
104
  end
105
-
105
+
106
106
  protected
107
-
107
+
108
108
  def xpath_escape(string)
109
109
  if string.include?("'") && string.include?('"')
110
110
  parts = string.split("'").map do |part|
111
111
  "'#{part}'"
112
112
  end
113
-
113
+
114
114
  "concat(" + parts.join(", \"'\", ") + ")"
115
115
  elsif string.include?("'")
116
116
  "\"#{string}\""
@@ -118,9 +118,9 @@ module Webrat
118
118
  "'#{string}'"
119
119
  end
120
120
  end
121
-
121
+
122
122
  end
123
-
123
+
124
124
  # Matches HTML content against an XPath query
125
125
  #
126
126
  # ==== Parameters
@@ -132,16 +132,16 @@ module Webrat
132
132
  HaveXpath.new(expected, options, &block)
133
133
  end
134
134
  alias_method :match_xpath, :have_xpath
135
-
135
+
136
136
  def assert_have_xpath(expected, options = {}, &block)
137
137
  hs = HaveXpath.new(expected, options, &block)
138
138
  assert hs.matches?(response_body), hs.failure_message
139
139
  end
140
-
140
+
141
141
  def assert_have_no_xpath(expected, options = {}, &block)
142
142
  hs = HaveXpath.new(expected, options, &block)
143
143
  assert !hs.matches?(response_body), hs.negative_failure_message
144
144
  end
145
-
145
+
146
146
  end
147
- end
147
+ end
@@ -10,15 +10,15 @@ module Webrat
10
10
  RUBY
11
11
  end
12
12
  end
13
-
13
+
14
14
  def webrat
15
15
  webrat_session
16
16
  end
17
-
17
+
18
18
  def webrat_session
19
19
  @_webrat_session ||= ::Webrat.session_class.new(self)
20
20
  end
21
-
21
+
22
22
  # all of these methods delegate to the @session, which should
23
23
  # be created transparently.
24
24
  #
@@ -31,7 +31,7 @@ module Webrat
31
31
  :header, :http_accept, :basic_auth,
32
32
  :save_and_open_page,
33
33
  :fills_in, :fill_in,
34
- :checks, :check,
34
+ :checks, :check,
35
35
  :unchecks, :uncheck,
36
36
  :chooses, :choose,
37
37
  :selects, :select,
@@ -47,15 +47,15 @@ module Webrat
47
47
  :select_option,
48
48
  :set_hidden_field, :submit_form,
49
49
  :request_page, :current_dom,
50
- :response_body,
50
+ :response_body,
51
51
  :selects_date, :selects_time, :selects_datetime,
52
52
  :select_date, :select_time, :select_datetime,
53
53
  :field_by_xpath,
54
54
  :field_with_id,
55
55
  :selenium,
56
56
  :simulate, :automate
57
-
58
-
59
-
57
+
58
+
59
+
60
60
  end
61
- end
61
+ end
@@ -1,6 +1,6 @@
1
1
  module Webrat #:nodoc:
2
2
  module MIME #:nodoc:
3
-
3
+
4
4
  def self.mime_type(string_or_symbol) #:nodoc:
5
5
  if string_or_symbol.is_a?(String)
6
6
  string_or_symbol
@@ -24,6 +24,6 @@ module Webrat #:nodoc:
24
24
  end
25
25
  end
26
26
  end
27
-
27
+
28
28
  end
29
- end
29
+ end
@@ -2,21 +2,21 @@ module Webrat
2
2
  module SaveAndOpenPage
3
3
  # Saves the page out to RAILS_ROOT/tmp/ and opens it in the default
4
4
  # web browser if on OS X. Useful for debugging.
5
- #
5
+ #
6
6
  # Example:
7
7
  # save_and_open_page
8
8
  def save_and_open_page
9
9
  return unless File.exist?(saved_page_dir)
10
10
 
11
11
  filename = "#{saved_page_dir}/webrat-#{Time.now.to_i}.html"
12
-
12
+
13
13
  File.open(filename, "w") do |f|
14
14
  f.write rewrite_css_and_image_references(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
21
  platform = ruby_platform
22
22
  if platform =~ /cygwin/ || platform =~ /win32/
@@ -25,26 +25,26 @@ module Webrat
25
25
  `open #{path}`
26
26
  end
27
27
  end
28
-
28
+
29
29
  def rewrite_css_and_image_references(response_html) # :nodoc:
30
30
  return response_html unless doc_root
31
31
  response_html.gsub(/"\/(stylesheets|images)/, doc_root + '/\1')
32
32
  end
33
-
33
+
34
34
  def saved_page_dir #:nodoc:
35
35
  File.expand_path(".")
36
36
  end
37
-
37
+
38
38
  def doc_root #:nodoc:
39
39
  nil
40
40
  end
41
-
41
+
42
42
  private
43
43
 
44
44
  # accessor for testing
45
45
  def ruby_platform
46
46
  RUBY_PLATFORM
47
47
  end
48
-
48
+
49
49
  end
50
- end
50
+ end
@@ -6,36 +6,36 @@ module Webrat
6
6
  # An HTML element (link, button, field, etc.) that Webrat expected was not found on the page
7
7
  class NotFoundError < WebratError
8
8
  end
9
-
9
+
10
10
  class Scope
11
11
  include Logging
12
12
  include Locators
13
-
13
+
14
14
  def self.from_page(session, response, response_body) #:nodoc:
15
15
  new(session) do
16
16
  @response = response
17
17
  @response_body = response_body
18
18
  end
19
19
  end
20
-
20
+
21
21
  def self.from_scope(session, scope, selector) #:nodoc:
22
22
  new(session) do
23
23
  @scope = scope
24
24
  @selector = selector
25
25
  end
26
26
  end
27
-
27
+
28
28
  attr_reader :session
29
-
29
+
30
30
  def initialize(session, &block) #:nodoc:
31
31
  @session = session
32
32
  instance_eval(&block) if block_given?
33
-
33
+
34
34
  if @selector && scoped_dom.nil?
35
35
  raise Webrat::NotFoundError.new("The scope was not found on the page: #{@selector.inspect}")
36
36
  end
37
37
  end
38
-
38
+
39
39
  # Verifies an input field or textarea exists on the current page, and stores a value for
40
40
  # it which will be sent when the form is submitted.
41
41
  #
@@ -53,7 +53,7 @@ module Webrat
53
53
  end
54
54
 
55
55
  webrat_deprecate :fills_in, :fill_in
56
-
56
+
57
57
  # Verifies that a hidden field exists on the current page and sets
58
58
  # the value to that given by the <tt>:to</tt> option.
59
59
  #
@@ -63,7 +63,7 @@ module Webrat
63
63
  field = locate_field(field_locator, HiddenField)
64
64
  field.set(options[:to])
65
65
  end
66
-
66
+
67
67
  # Verifies that an input checkbox exists on the current page and marks it
68
68
  # as checked, so that the value will be submitted with the form.
69
69
  #
@@ -74,7 +74,7 @@ module Webrat
74
74
  end
75
75
 
76
76
  webrat_deprecate :checks, :check
77
-
77
+
78
78
  # Verifies that an input checkbox exists on the current page and marks it
79
79
  # as unchecked, so that the value will not be submitted with the form.
80
80
  #
@@ -85,7 +85,7 @@ module Webrat
85
85
  end
86
86
 
87
87
  webrat_deprecate :unchecks, :uncheck
88
-
88
+
89
89
  # Verifies that an input radio button exists on the current page and marks it
90
90
  # as checked, so that the value will be submitted with the form.
91
91
  #
@@ -96,7 +96,7 @@ module Webrat
96
96
  end
97
97
 
98
98
  webrat_deprecate :chooses, :choose
99
-
99
+
100
100
  # Verifies that a an option element exists on the current page with the specified
101
101
  # text. You can optionally restrict the search to a specific select list by
102
102
  # assigning <tt>options[:from]</tt> the value of the select list's name or
@@ -111,7 +111,7 @@ module Webrat
111
111
  end
112
112
 
113
113
  webrat_deprecate :selects, :select
114
-
114
+
115
115
  DATE_TIME_SUFFIXES = {
116
116
  :year => '1i',
117
117
  :month => '2i',
@@ -120,9 +120,9 @@ module Webrat
120
120
  :minute => '5i'
121
121
  }
122
122
 
123
- # Verifies that date elements (year, month, day) exist on the current page
123
+ # Verifies that date elements (year, month, day) exist on the current page
124
124
  # with the specified values. You can optionally restrict the search to a specific
125
- # date's elements by assigning <tt>options[:from]</tt> the value of the date's
125
+ # date's elements by assigning <tt>options[:from]</tt> the value of the date's
126
126
  # label. Selects all the date elements with date provided. The date provided may
127
127
  # be a string or a Date/Time object.
128
128
  #
@@ -136,15 +136,15 @@ module Webrat
136
136
  # select_date Date.parse("December 25, 2000"), :from => "Event"
137
137
  # select_date "April 26, 1982", :id_prefix => 'birthday'
138
138
  def select_date(date_to_select, options ={})
139
- date = date_to_select.is_a?(Date) || date_to_select.is_a?(Time) ?
140
- date_to_select : Date.parse(date_to_select)
141
-
139
+ date = date_to_select.is_a?(Date) || date_to_select.is_a?(Time) ?
140
+ date_to_select : Date.parse(date_to_select)
141
+
142
142
  id_prefix = locate_id_prefix(options) do
143
143
  year_field = FieldByIdLocator.new(@session, dom, /(.*?)_#{DATE_TIME_SUFFIXES[:year]}$/).locate
144
144
  raise NotFoundError.new("No date fields were found") unless year_field && year_field.id =~ /(.*?)_1i/
145
145
  $1
146
146
  end
147
-
147
+
148
148
  select date.year, :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:year]}"
149
149
  select date.strftime('%B'), :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:month]}"
150
150
  select date.day, :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:day]}"
@@ -152,9 +152,9 @@ module Webrat
152
152
 
153
153
  webrat_deprecate :selects_date, :select_date
154
154
 
155
- # Verifies that time elements (hour, minute) exist on the current page
155
+ # Verifies that time elements (hour, minute) exist on the current page
156
156
  # with the specified values. You can optionally restrict the search to a specific
157
- # time's elements by assigning <tt>options[:from]</tt> the value of the time's
157
+ # time's elements by assigning <tt>options[:from]</tt> the value of the time's
158
158
  # label. Selects all the time elements with date provided. The time provided may
159
159
  # be a string or a Time object.
160
160
  #
@@ -164,28 +164,28 @@ module Webrat
164
164
  #
165
165
  # Note: Just like Rails' time_select helper this assumes the form is using
166
166
  # 24 hour select boxes, and not 12 hours with AM/PM.
167
- #
167
+ #
168
168
  # Examples:
169
169
  # select_time "9:30"
170
170
  # select_date "3:30PM", :from => "Party Time"
171
171
  # select_date Time.parse("10:00PM"), :from => "Event"
172
172
  # select_date "10:30AM", :id_prefix => 'meeting'
173
173
  def select_time(time_to_select, options ={})
174
- time = time_to_select.is_a?(Time) ? time_to_select : Time.parse(time_to_select)
174
+ time = time_to_select.is_a?(Time) ? time_to_select : Time.parse(time_to_select)
175
175
 
176
176
  id_prefix = locate_id_prefix(options) do
177
177
  hour_field = FieldByIdLocator.new(@session, dom, /(.*?)_#{DATE_TIME_SUFFIXES[:hour]}$/).locate
178
178
  raise NotFoundError.new("No time fields were found") unless hour_field && hour_field.id =~ /(.*?)_4i/
179
179
  $1
180
180
  end
181
-
181
+
182
182
  select time.hour.to_s.rjust(2,'0'), :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:hour]}"
183
183
  select time.min.to_s.rjust(2,'0'), :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:minute]}"
184
184
  end
185
185
 
186
186
  webrat_deprecate :selects_time, :select_time
187
-
188
- # Verifies and selects all the date and time elements on the current page.
187
+
188
+ # Verifies and selects all the date and time elements on the current page.
189
189
  # See #select_time and #select_date for more details and available options.
190
190
  #
191
191
  # Examples:
@@ -194,16 +194,16 @@ module Webrat
194
194
  # select_datetime Time.parse("December 25, 2000 15:30"), :from => "Event"
195
195
  # select_datetime "April 26, 1982 5:50PM", :id_prefix => 'birthday'
196
196
  def select_datetime(time_to_select, options ={})
197
- time = time_to_select.is_a?(Time) ? time_to_select : Time.parse(time_to_select)
198
-
197
+ time = time_to_select.is_a?(Time) ? time_to_select : Time.parse(time_to_select)
198
+
199
199
  options[:id_prefix] ||= (options[:from] ? FieldByIdLocator.new(@session, dom, options[:from]).locate : nil)
200
-
200
+
201
201
  select_date time, options
202
202
  select_time time, options
203
203
  end
204
204
 
205
205
  webrat_deprecate :selects_datetime, :select_datetime
206
-
206
+
207
207
  # Verifies that an input file field exists on the current page and sets
208
208
  # its value to the given +file+, so that the file will be uploaded
209
209
  # along with the form. An optional <tt>content_type</tt> may be given.
@@ -229,13 +229,13 @@ module Webrat
229
229
  def click_area(area_name)
230
230
  find_area(area_name).click
231
231
  end
232
-
232
+
233
233
  webrat_deprecate :clicks_area, :click_area
234
-
234
+
235
235
  # Issues a request for the URL pointed to by a link on the current page,
236
236
  # follows any redirects, and verifies the final page load was successful.
237
- #
238
- # click_link has very basic support for detecting Rails-generated
237
+ #
238
+ # click_link has very basic support for detecting Rails-generated
239
239
  # JavaScript onclick handlers for PUT, POST and DELETE links, as well as
240
240
  # CSRF authenticity tokens if they are present.
241
241
  #
@@ -243,15 +243,15 @@ module Webrat
243
243
  #
244
244
  # Passing a :method in the options hash overrides the HTTP method used
245
245
  # for making the link request
246
- #
246
+ #
247
247
  # It will try to find links by (in order of precedence):
248
248
  # innerHTML, with simple &nbsp; handling
249
249
  # title
250
250
  # id
251
- #
251
+ #
252
252
  # innerHTML and title are matchable by text subtring or Regexp
253
253
  # id is matchable by full text equality or Regexp
254
- #
254
+ #
255
255
  # Example:
256
256
  # click_link "Sign up"
257
257
  # click_link "Sign up", :javascript => false
@@ -261,7 +261,7 @@ module Webrat
261
261
  end
262
262
 
263
263
  webrat_deprecate :clicks_link, :click_link
264
-
264
+
265
265
  # Verifies that a submit button exists for the form, then submits the form, follows
266
266
  # any redirects, and verifies the final page was successful.
267
267
  #
@@ -288,38 +288,38 @@ module Webrat
288
288
  def submit_form(id)
289
289
  FormLocator.new(@session, dom, id).locate.submit
290
290
  end
291
-
291
+
292
292
  def dom # :nodoc:
293
293
  return @dom if @dom
294
-
294
+
295
295
  if @selector
296
296
  @dom = scoped_dom
297
297
  else
298
298
  @dom = page_dom
299
299
  end
300
-
300
+
301
301
  return @dom
302
302
  end
303
-
303
+
304
304
  protected
305
-
305
+
306
306
  def page_dom #:nodoc:
307
307
  return @response.dom if @response.respond_to?(:dom)
308
-
308
+
309
309
  if @session.xml_content_type?
310
310
  dom = Webrat::XML.xml_document(@response_body)
311
311
  else
312
312
  dom = Webrat::XML.html_document(@response_body)
313
313
  end
314
-
314
+
315
315
  Webrat.define_dom_method(@response, dom)
316
316
  return dom
317
317
  end
318
-
318
+
319
319
  def scoped_dom
320
320
  Webrat::XML.css_at(@scope.dom, @selector)
321
321
  end
322
-
322
+
323
323
  def locate_field(field_locator, *field_types) #:nodoc:
324
324
  if field_locator.is_a?(Field)
325
325
  field_locator
@@ -327,10 +327,10 @@ module Webrat
327
327
  field(field_locator, *field_types)
328
328
  end
329
329
  end
330
-
330
+
331
331
  def locate_id_prefix(options, &location_strategy) #:nodoc:
332
332
  return options[:id_prefix] if options[:id_prefix]
333
-
333
+
334
334
  if options[:from]
335
335
  if (label = LabelLocator.new(@session, dom, options[:from]).locate)
336
336
  label.for_id
@@ -341,10 +341,10 @@ module Webrat
341
341
  yield
342
342
  end
343
343
  end
344
-
344
+
345
345
  def forms #:nodoc:
346
346
  @forms ||= Form.load_all(@session, dom)
347
347
  end
348
-
348
+
349
349
  end
350
350
  end