diff --git a/lib/webrat/core/field.rb b/lib/webrat/core/field.rb index 82e02b2b..8555b8e8 100644 --- a/lib/webrat/core/field.rb +++ b/lib/webrat/core/field.rb @@ -159,7 +159,7 @@ def replace_param_value(params, oval, nval) class ButtonField < Field #:nodoc: def matches_text?(text) - @element.inner_html =~ /#{Regexp.escape(text.to_s)}/i + Webrat::XML.inner_html(@element) =~ /#{Regexp.escape(text.to_s)}/i end def matches_value?(value) @@ -284,7 +284,7 @@ class TextareaField < Field #:nodoc: protected def default_value - @element.inner_html + Webrat::XML.inner_html(@element) end end @@ -338,7 +338,7 @@ def default_value selected_options.map do |option| return "" if option.nil? - Webrat::XML.attribute(option, "value") || option.inner_html + Webrat::XML.attribute(option, "value") || Webrat::XML.inner_html(option) end end diff --git a/lib/webrat/core/label.rb b/lib/webrat/core/label.rb index 7a01521d..e2e08c01 100644 --- a/lib/webrat/core/label.rb +++ b/lib/webrat/core/label.rb @@ -11,7 +11,7 @@ def matches_text?(label_text) end def text - str = @element.inner_text + str = Webrat::XML.inner_text(@element) str.gsub!("\n","") str.strip! str.squeeze!(" ") diff --git a/lib/webrat/core/link.rb b/lib/webrat/core/link.rb index e1cdb3a7..272f7d9b 100644 --- a/lib/webrat/core/link.rb +++ b/lib/webrat/core/link.rb @@ -40,11 +40,11 @@ def matches_id?(id_or_regexp) end def inner_html - @element.inner_html + Webrat::XML.inner_html(@element) end def text - @element.inner_text + Webrat::XML.inner_text(@element) end protected diff --git a/lib/webrat/core/matchers/have_content.rb b/lib/webrat/core/matchers/have_content.rb index 8344ed24..2c4f43ee 100644 --- a/lib/webrat/core/matchers/have_content.rb +++ b/lib/webrat/core/matchers/have_content.rb @@ -8,7 +8,7 @@ def initialize(content) def matches?(stringlike) @document = Webrat::XML.document(stringlike) - @element = @document.inner_text + @element = Webrat::XML.inner_text(@document) case @content when String diff --git a/lib/webrat/core/select_option.rb b/lib/webrat/core/select_option.rb index f61a1627..1a2001f9 100644 --- a/lib/webrat/core/select_option.rb +++ b/lib/webrat/core/select_option.rb @@ -8,9 +8,9 @@ def initialize(select, element) def matches_text?(text) if text.is_a?(Regexp) - @element.inner_html =~ text + Webrat::XML.inner_html(@element) =~ text else - @element.inner_html == text.to_s + Webrat::XML.inner_html(@element) == text.to_s end end @@ -22,7 +22,7 @@ def choose protected def value - Webrat::XML.attribute(@element, "value") || @element.inner_html + Webrat::XML.attribute(@element, "value") || Webrat::XML.inner_html(@element) end end diff --git a/lib/webrat/core/xml.rb b/lib/webrat/core/xml.rb index 1a2d302b..8a0de4e0 100644 --- a/lib/webrat/core/xml.rb +++ b/lib/webrat/core/xml.rb @@ -6,6 +6,7 @@ def self.document(stringlike) #:nodoc: Webrat.nokogiri_document(stringlike) else Webrat::XML.hpricot_document(stringlike) + # Webrat.rexml_document(Webrat::XML.hpricot_document(stringlike).to_html) end end @@ -25,12 +26,26 @@ def self.hpricot_document(stringlike) end end + def self.inner_html(element) + element.inner_html + end + + def self.inner_text(element) + element.inner_text + end + def self.attribute(element, attribute_name) - element[attribute_name] + # case element + # when Nokogiri::XML::Element, Hash + element[attribute_name] + # else + # element.attributes[attribute_name] + # end end def self.xpath_search(element, *searches) searches.flatten.map do |search| + # REXML::XPath.match(element, search) element.xpath(search) end.flatten.compact end