16

我有一个包含多个.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

有任何想法吗?

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返回匹配元素的数组。所以如果你只想要第二个匹配元素,你可以这样做:

page.all(:css, '.block')[1]  #Note that it is 0-based index
于 2012-09-15T19:23:51.157 回答