40

我想做查找class_name并返回所有元素中的最后一个元素。

在 jquery 中,我们可以编写类似下面的内容,但在 capybara 中似乎不起作用

find(".delete:last")

如果您使用的是webkit驱动程序,您可以编写类似 -

find(".delete:last-child")

在水豚中,您可以使用以下方法获取最后一个元素 -

all(:css, ".delete").last

上面有什么替代方案吗?

4

2 回答 2

58

我遇到了同样的问题,最终在 Capybara 2.4 中使用了这种方法

all('.delete').last
于 2014-07-04T12:06:36.657 回答
0

基于@Sharagoz 的回答和@tgf 关于所有(与 find 不同)不等待异步完成的评论,这种组合似乎对我有用:

wait_for_ajax
all('.selector').last

将此添加到 rspec/capybara:

module RspecFeatureHelpers
  def wait_for_ajax
    Timeout.timeout(Capybara.default_max_wait_time) do
      loop do
        active = page.evaluate_script('jQuery.active')
        break if active == 0
      end
    end
  end
end
于 2016-11-26T20:00:30.593 回答