通过水豚项目迭代(Iterating through items in Capybara)

2019-07-31 14:29发布

我有包含类.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

有任何想法吗?

Answer 1:

你想使用all方法(见http://rubydoc.info/github/jnicklas/capybara/Capybara/Node/Finders#all-instance_method )。

与类“块”输出每个元素的文本(即迭代)的一个例子是:

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


文章来源: Iterating through items in Capybara