improve search
This commit is contained in:
parent
fdd650d57a
commit
bc2806bfd3
|
@ -20,13 +20,13 @@ def has_attribute?(name, value)
|
||||||
attribute.text == value
|
attribute.text == value
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_input(name, additional_search = '')
|
def find_input(name, additional_search = '', type = '')
|
||||||
search = "[#{name}]"
|
search = "[#{name}]"
|
||||||
if name[/\[\]$/]
|
if name[/\[\]$/]
|
||||||
search = "[#{name[0..-3]}][]"
|
search = "[#{name[0..-3]}][]"
|
||||||
end
|
end
|
||||||
|
|
||||||
find("[name$='#{search}']#{additional_search}")
|
find("#{type}[name$='#{search}']#{additional_search}")
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_input(name, value)
|
def set_input(name, value)
|
||||||
|
@ -40,16 +40,26 @@ def set_input(name, value)
|
||||||
find_input(name, '[type=checkbox]')
|
find_input(name, '[type=checkbox]')
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
|
# normal
|
||||||
|
|
||||||
find_input(name)
|
find_input(name)
|
||||||
rescue Capybara::ElementNotFound
|
rescue Capybara::ElementNotFound
|
||||||
|
begin
|
||||||
|
# select multiple
|
||||||
|
|
||||||
|
find_input("#{name}[]", '', 'select')
|
||||||
|
rescue Capybara::ElementNotFound
|
||||||
|
# checkboxes/radio
|
||||||
|
|
||||||
search_value = value
|
search_value = value
|
||||||
search_value = value.id if value.respond_to?(:id)
|
search_value = value.id if value.respond_to?(:id)
|
||||||
|
|
||||||
result = find_input("#{name}_ids[]", "[value='#{search_value}']")
|
result = find_input("#{name}_ids[]", "[value='#{search_value}']", 'input')
|
||||||
value = true
|
value = true
|
||||||
result
|
result
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
case input.tag_name.downcase
|
case input.tag_name.downcase
|
||||||
when 'select'
|
when 'select'
|
||||||
|
|
Loading…
Reference in New Issue