web-dev-qa-db-ja.com

カピバラのアイテムを反復処理

クラス.blockの複数の要素を含むページがあります。カピバラでは、アクションを完了する前に、このクラスの各要素をループして参照できるようにしたいと思います。

ただし、これまでに試したコードはどれも機能しませんでした。これが私が試したことです:

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

何か案は?

15
Michael

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一致する要素の配列を返します。したがって、2番目の一致する要素だけが必要な場合は、次のことができます。

page.all(:css, '.block')[1]  #Note that it is 0-based index
41
Justin Ko