У Капибары есть способ справиться с этим, используя внутри.Например:
And I fill in "Name" with "Radiology" within "fields"
Например, если у вас есть div с идентификаторами 'Hospital_Fields' и 'Department_fields' в обеих областях формы, вы можете сделать что-то вроде этого, чтобы определить, какое поле вы заполняете:
And I fill in "Name" with "Cardiology" within "hospital_fields"
And I fill in "Name" with "Radiology" within "department_fields"
Вы также можете конкретизировать, используя идентификатор текстового поля вместо имени метки поля.Например, если первое текстовое поле имеет идентификатор «имя_больницы», а второе - «имя_больницы», вы можете сделать следующее:
And I fill in "hospital_name" with "Cardiology"
And I fill in "hospital_deparment_name" with "Radiology"
ОБНОВЛЕНИЕ : вы можететакже добавьте пользовательский шаг огурца, чтобы использовать пронумерованные входные данные:
When /^(?:|I )fill in the (\d+)(?:st|nd|rd|th) "([^"]*)" with "([^"]*)"$/ do |num, name, value|
find(:xpath, ".//form/input[@name='#{name}'][#{num}]").set(value)
end
And I fill in the 1st "name" with "Cardiology"
And I fill in the 2nd "name" with "Radiology"
ОБНОВЛЕНИЕ : Чтобы соответствовать метке, используйте это выражение:
find(:xpath, ".//input[@id=//label[contains(.,'#{name}')]/@for][#{num}]").set(value)