Перебор элементов в Capybara
У меня есть страница, содержащая несколько элементов класса .блок. В Capybara я хочу иметь возможность перебирать и ссылаться на каждый из элементов этого класса перед завершением действия.
однако ни один из кода, который я пробовал до сих пор, не работал. Вот что я пробовал:
within('.block:nth-child(1)') do
find('.Button').click
end
page.find('.block').all.first.find('Button').click
page.find('.block').all[1].find('Button').click
какие идеи?
1 ответов
вы хотите использовать all
метод (см. http://rubydoc.info/github/jnicklas/capybara/Capybara/Node/Finders#all-instance_method).
примером вывода текста каждого элемента (т. е. итерации) с классом 'block' будет:
page.all(:css, '.block').each do |el|
puts el.text
end
page.all
возвращает массив одинаковых элементов. Поэтому, если вы просто хотите второй соответствующий элемент, вы можете сделать:
page.all(:css, '.block')[1] #Note that it is 0-based index