Switching FieldLabeledLocator to use elements
This commit is contained in:
parent
28bd5f2533
commit
e72bba29c7
@ -21,5 +21,17 @@ module Webrat
|
|||||||
Webrat::XML.attribute(@element, "for")
|
Webrat::XML.attribute(@element, "for")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def field
|
||||||
|
Field.load(@session, field_element)
|
||||||
|
end
|
||||||
|
|
||||||
|
def field_element
|
||||||
|
if for_id.blank?
|
||||||
|
Webrat::XML.xpath_at(@element, *Field.xpath_search)
|
||||||
|
else
|
||||||
|
Webrat::XML.css_search(@session.dom, "#" + for_id).first
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -21,7 +21,7 @@ module Webrat
|
|||||||
end
|
end
|
||||||
|
|
||||||
def area_elements
|
def area_elements
|
||||||
Webrat::XML.css_search(@scope.dom, "area")
|
Webrat::XML.xpath_search(@scope.dom, Area.xpath_search)
|
||||||
end
|
end
|
||||||
|
|
||||||
def error_message
|
def error_message
|
||||||
|
@ -7,22 +7,9 @@ module Webrat
|
|||||||
class FieldLabeledLocator < Locator
|
class FieldLabeledLocator < Locator
|
||||||
|
|
||||||
def locate
|
def locate
|
||||||
# TODO - Convert to using elements
|
|
||||||
@scope.send(:forms).detect_mapped do |form|
|
|
||||||
possible_fields = form.send(:fields_by_type, @field_types)
|
|
||||||
|
|
||||||
matching_fields = possible_fields.select do |possible_field|
|
|
||||||
possible_field.send(:labels).any? do |label|
|
|
||||||
text(label.element) =~ /^\W*#{Regexp.escape(@value.to_s)}\b/i
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
matching_fields.min { |a, b| a.label_text.length <=> b.label_text.length }
|
matching_fields.min { |a, b| a.label_text.length <=> b.label_text.length }
|
||||||
end
|
end
|
||||||
|
|
||||||
# matching_fields.min { |a, b| a.label_text.length <=> b.label_text.length }
|
|
||||||
end
|
|
||||||
|
|
||||||
def matching_fields
|
def matching_fields
|
||||||
matching_labels.map(&:field).compact.uniq
|
matching_labels.map(&:field).compact.uniq
|
||||||
end
|
end
|
||||||
@ -39,6 +26,10 @@ module Webrat
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def label_elements
|
||||||
|
Webrat::XML.xpath_search(@scope.dom, Label.xpath_search)
|
||||||
|
end
|
||||||
|
|
||||||
def error_message
|
def error_message
|
||||||
"Could not find field labeled #{@value.inspect}"
|
"Could not find field labeled #{@value.inspect}"
|
||||||
end
|
end
|
||||||
|
@ -200,6 +200,10 @@ module Webrat
|
|||||||
@_page_scope ||= Scope.from_page(self, response, response_body)
|
@_page_scope ||= Scope.from_page(self, response, response_body)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def dom
|
||||||
|
page_scope.dom
|
||||||
|
end
|
||||||
|
|
||||||
def_delegators :current_scope, :fill_in, :fills_in
|
def_delegators :current_scope, :fill_in, :fills_in
|
||||||
def_delegators :current_scope, :set_hidden_field
|
def_delegators :current_scope, :set_hidden_field
|
||||||
def_delegators :current_scope, :submit_form
|
def_delegators :current_scope, :submit_form
|
||||||
|
Loading…
Reference in New Issue
Block a user