水豚 first() 仅在我添加 :minimum=>1 时有效

Capybara first() only works when I add :minimum=>1

first() 按预期在版本 2.15.0 中工作,但在将 cucumber 2.4.0 更新为 3.1.2 后,它不再以这种方式工作。

如果我们将参数 :minimum=>1 添加到

first() 中,它就会起作用。如果我省略它,它会 return nil 即使元素在那里。

first("div", :minimum=>1)

这是我们在 gemfile.lock

中的 Capybara 依赖项

capybara (2.15.0) addressable mini_mime (>= 0.1.3) nokogiri (>= 1.3.3) rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0)

如 Capybara 中所述 Upgrading.md - https://github.com/teamcapybara/capybara/blob/master/UPGRADING.md#finders - first 的行为在 Capybara 2.x 和 3.x 之间发生了变化 - first 将return 如果在调用该方法时元素不立即存在,则 2.x 中立即为 nil。在 3.x 中它将等待至少一个匹配元素存在。听起来你更新的库之一正在期待 Capybara 3.x 行为,所以看看你在升级黄瓜时还更新了什么(如果你也在使用它,可能 site_prism??)