Это тоже работает. Разница здесь в том, что он находит поле на основе частичного совпадения текста метки. У наших полей есть «:» в конце, но это не всегда правильно, поэтому я не хотел совпадать по всему значению метки ...
When /^i enter "([^"]*)" in the "([^"]*)" field$/i do |value, fieldname|
@thefield = all("label").detect { |l| l.has_content?(fieldname) }
if @thefield.nil? then
raise Exception.new("Couldn't find field #{fieldname}")
end
fill_in @thefield[:for], :with=>value
end
Я все еще хочу расширить это, чтобы не учитывать регистр.
Это мой первый день с rspec, cucumber, и я действительно никогда не использую ruby, поэтому простите код «меньше чем rubyish / rspec» но это похоже на работу.
Обновление
Далее будет найдено поле на основе частичной метки с помощью совпадения CASE INSENSITIVE. Это работает как брелок для моих нужд.
When= /^i enter "([^"]*)" in the "([^"]*)" field$/i do |value, fieldname|
@thefield = all("label").detect { |l| (l.text =~ /#{fieldname}/i).nil? == false }
if @thefield.nil? then
raise Exception.new("Couldn't find field '#{fieldname}'")
end
fill_in @thefield[:for], :with=>value
end