Перебор элементов в 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