我有一个包含多个class .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
有什么想法吗?
答案 0 :(得分:38)
您想使用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