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

San*_*ing 37 capybara

我想找到class_name并返回所有元素中的最后一个元素.

在jquery中,我们可以编写类似下面的内容,但这似乎不适用于水豚

find(".delete:last")
Run Code Online (Sandbox Code Playgroud)

如果你使用的是webkit驱动程序,你可以写一些像 -

find(".delete:last-child")
Run Code Online (Sandbox Code Playgroud)

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

all(:css, ".delete").last
Run Code Online (Sandbox Code Playgroud)

上面有什么替代方案吗?

Sha*_*goz 50

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

all('.delete').last
Run Code Online (Sandbox Code Playgroud)

  • 对于未来的读者,请注意:请记住,`all`不像`find`不会等待任何元素; 它没有办法预测应该有多少.在使用此功能之前,确保已验证页面上的任何异步活动是否已完成,这是一个好主意. (6认同)
  • 这也适用于`within`,所以你可以做所有('li').last {fill_in"Name",with:"Value"}` (5认同)