Extract FieldByIdLocator object

This commit is contained in:
Bryan Helmkamp 2008-11-29 01:51:18 -05:00
parent 9e030a1b05
commit 04959ae457
2 changed files with 28 additions and 10 deletions

View File

@ -68,17 +68,9 @@ module Webrat
end end
def find_field_with_id(id, *field_types) #:nodoc: def find_field_with_id(id, *field_types) #:nodoc:
field_elements = Webrat::XML.xpath_search(dom, *Field.xpath_search) require "webrat/core/locators/field_by_id_locator"
field_element = field_elements.detect do |field_element| FieldByIdLocator.new(self, id).locate
if id.is_a?(Regexp)
Webrat::XML.attribute(field_element, "id") =~ id
else
Webrat::XML.attribute(field_element, "id") == id.to_s
end
end
field_by_element(field_element)
end end
def find_select_option(option_text, id_or_name_or_label) #:nodoc: def find_select_option(option_text, id_or_name_or_label) #:nodoc:

View File

@ -0,0 +1,26 @@
class FieldByIdLocator
def initialize(scope, value)
@scope = scope
@value = value
end
def locate
@scope.field_by_element(field_element)
end
def field_element
field_elements.detect do |field_element|
if @value.is_a?(Regexp)
Webrat::XML.attribute(field_element, "id") =~ @value
else
Webrat::XML.attribute(field_element, "id") == @value.to_s
end
end
end
def field_elements
Webrat::XML.xpath_search(@scope.dom, *Webrat::Field.xpath_search)
end
end