16

クラス.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

何か案は?

4

1 に答える 1

45

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
于 2012-09-15T19:23:51.157 に答える