如何找到capybara中的最后一个匹配元素?

时间:2013-08-29 09:40:47

标签: capybara

我希望通过class_name找到并返回所有元素中的最后一个元素。

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

find(".delete:last")

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

的内容
find(".delete:last-child")

在水豚中,你可以使用下面的方法获得最后一个元素 -

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

上面有其他选择吗?

2 个答案:

答案 0 :(得分:47)

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

all('.delete').last

答案 1 :(得分: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