Refactoring locator methods
This commit is contained in:
parent
979b84bb48
commit
da7017acd6
@ -11,10 +11,10 @@ module Webrat
|
||||
@fields = nil
|
||||
end
|
||||
|
||||
def find_field(id_or_name_or_label, *field_types)
|
||||
find_field_by_id(id_or_name_or_label, *field_types) ||
|
||||
find_field_by_name(id_or_name_or_label, *field_types) ||
|
||||
find_field_by_label(id_or_name_or_label, *field_types) ||
|
||||
def find_field(locator, *field_types)
|
||||
field_by_id(locator, *field_types) ||
|
||||
field_by_name(locator, *field_types) ||
|
||||
field_by_label(locator, *field_types) ||
|
||||
nil
|
||||
end
|
||||
|
||||
@ -48,17 +48,17 @@ module Webrat
|
||||
@session.request_page(form_action, form_method, params)
|
||||
end
|
||||
|
||||
def find_field_by_id(id, *field_types)
|
||||
def field_by_id(id, *field_types)
|
||||
possible_fields = fields_by_type(field_types)
|
||||
possible_fields.detect { |possible_field| possible_field.matches_id?(id) }
|
||||
end
|
||||
|
||||
def find_field_by_name(name, *field_types)
|
||||
def field_by_name(name, *field_types)
|
||||
possible_fields = fields_by_type(field_types)
|
||||
possible_fields.detect { |possible_field| possible_field.matches_name?(name) }
|
||||
end
|
||||
|
||||
def find_field_by_label(label, *field_types)
|
||||
def field_by_label(label, *field_types)
|
||||
possible_fields = fields_by_type(field_types)
|
||||
matching_fields = possible_fields.select do |possible_field|
|
||||
possible_field.matches_label?(label)
|
||||
@ -69,7 +69,11 @@ module Webrat
|
||||
protected
|
||||
|
||||
def fields_by_type(field_types)
|
||||
fields.select { |f| field_types.include?(f.class) }
|
||||
if field_types.any?
|
||||
fields.select { |f| field_types.include?(f.class) }
|
||||
else
|
||||
fields
|
||||
end
|
||||
end
|
||||
|
||||
def params
|
||||
|
@ -10,12 +10,8 @@ module Webrat
|
||||
end
|
||||
|
||||
def field_labeled(label, *field_types)
|
||||
if field_types.empty?
|
||||
field_types = [TextField, TextareaField, CheckboxField, RadioField, HiddenField]
|
||||
end
|
||||
|
||||
forms.each do |form|
|
||||
result = form.find_field_by_label(label, *field_types)
|
||||
result = form.field_by_label(label, *field_types)
|
||||
return result if result
|
||||
end
|
||||
|
||||
@ -23,12 +19,8 @@ module Webrat
|
||||
end
|
||||
|
||||
def field_with_id(id, *field_types)
|
||||
if field_types.empty?
|
||||
field_types = [TextField, TextareaField, CheckboxField, RadioField, HiddenField]
|
||||
end
|
||||
|
||||
forms.each do |form|
|
||||
result = form.find_field_by_id(id, *field_types)
|
||||
result = form.field_by_id(id, *field_types)
|
||||
return result if result
|
||||
end
|
||||
|
||||
@ -36,12 +28,8 @@ module Webrat
|
||||
end
|
||||
|
||||
def field_with_name(name, *field_types)
|
||||
if field_types.empty?
|
||||
field_types = [TextField, TextareaField, CheckboxField, RadioField, HiddenField]
|
||||
end
|
||||
|
||||
forms.each do |form|
|
||||
result = form.find_field_by_name(name, *field_types)
|
||||
result = form.field_by_name(name, *field_types)
|
||||
return result if result
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user