如何 select 使用水豚的第一个添加到购物车按钮?

how to select the first add to cart button using capybara?

页面中有许多带有标签 "Add to Cart" 的提交按钮。我想select第一个加入购物车按钮。匹配第一个添加到购物车按钮的最佳方式是什么?按钮定义如下。它们是带有标签 "Add to Cart"

的提交按钮
 <input type="submit" name="commit" value="Add to Cart">

我试过了

all('input[type="submit"]')[0] 

这将 select 第一个提交按钮。我怎样才能确保它有标签 "Add to Cart"?谢谢!

应该这样做:

find("input[type='submit']", match: :first)

有很多方法可以做你想做的事,其中一些需要你展示更多的 HTML 结构。然而,最简单的可能是利用你可以将任何选择器类型传递给 first/all/find 并使用内置 :button 选择器 - https://github.com/teamcapybara/capybara/blob/3.6_stable/lib/capybara/selector.rb#L145 - 将通过按钮值找到。

first(:button, 'Add to Cart')

all(:button, 'Add to Cart')[0] # more useful if you want other than the first

请注意,all 确实有缺点,即它返回的元素不可重新加载,但如果您的页面没有更改并且您要立即与该元素交互,则它不应该是问题。