(Немного предыстории, если это поможет: в нашем приложении Rails есть куча потенциально повторяющихся динамически генерируемых форм с использованием двойных вложенных полей с идентификаторами в шаблоне foo_attributes_0_bar_attributes_0_bat_12, где в основном первые два числа увеличиваются в зависимости от количества повторений есть вложенная форма, а последнее число является идентификатором конкретного объекта "bat". Это затрудняет выбор в Cucumber для тестирования!)
Я пытаюсь написать несколько шагов так:
When I check the 1st checkbox with the value "Bat 12"
или
When I check the 3rd checkbox with id matching "bar_attributes_bat"
У меня работает следующее, но мой метод поиска флажков (или полей) мне кажется довольно дурацким и неэффективным:
When /^I check the (\d+)(st|nd|rd|th) checkbox with the value "([^"]*)"$/ do |number, junk, value|
check(page.all("input").select {|el| el.node['value'] == value}[(number.to_i-1)].node['id'])
end
When /^I check the (\d+)(st|nd|rd|th) checkbox with id matching "([^"]*)"$/ do |number, junk, id_string|
check(page.all("input").select {|el| el.node['id'] && el.node['id'].match(/#{id_string}/)}[(number.to_i-1)].node['id'])
end
Есть ли лучший способ выбрать эти элементы ввода?