我希望通过class_name
找到并返回所有元素中的最后一个元素。
在jquery中,我们可以编写类似下面的内容,但似乎在capybara中不起作用
find(".delete:last")
如果您使用webkit
驱动程序,可以编写类似 -
find(".delete:last-child")
在水豚中,你可以使用下面的方法获得最后一个元素 -
all(:css, ".delete").last
上面有其他选择吗?
答案 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