Регулярные выражения в шагах от огурца
Огурец генерирует некоторые аккуратные шаги регулярного выражения. Я столкнулся с проблемой, когда я попробовал это.
В функции:
And I fill in "Telephone (Home)" with "61234567"
По шагам вебрат:
When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field, value|
fill_in(field, :with => value)
end
Обнаружена ошибка:
Could not find field: "Telephone (Home)" (Webrat::NotFoundError)
Кажется, что скобка между "Домом" дает проблему. Как настроить регулярное выражение для учета скобок?
ОБНОВИТЬ:
Кажется, что регулярное выражение не было проблемой, поскольку переменная экземпляра " field " действительно выдает "Telephone (Home)". Реальная проблема заключалась в том, как метод " fill_in " вебрата анализирует переменную поля.
3 ответа
Это встретило меня тоже с полем "(выйти)"...
Вы могли бы позвонить в поле id?
fill_in("user_telephone_home", :with => data)
Если вы хотите захватить только "Телефон", попробуйте это:
/^I fill in "(\w+).*?" with "([^\"]*)"$/
Если это "Дом", вы после попробуйте это:
/^I fill in "(?:.*?\()?(.+?)\)?" with "([^\"]*)"$/;
У меня была похожая проблема с сопоставлением меток с полями в webrat, и я придумал этот фрагмент кода, который ослабляет регулярное выражение, используемое для сопоставления метки с полем. Может быть, это поможет вам.
У меня есть это в моем features/support/env.rb
module Webrat
module Locators
class FieldLabeledLocator < Locator
def matching_label_elements_with_numbering
label_elements.select do |label_element|
text(label_element) =~ /^.*#{Regexp.escape(@value.to_s)}.*$/i
end
end
alias_method_chain :matching_label_elements, :numbering
end
end
end