Подтвердить что ты не робот

Итерация через предметы в Капибаре

У меня есть страница, содержащая несколько элементов класса .block. В 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

Любые идеи?

4b9b3361

Ответ 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