ruby-on-rails - 是否可以用 Capybara 填写数字字段 wo/labels?

标签 ruby-on-rails rspec capybara capybara-webkit

我有一个数字字段,需要一个 :product_quantity在它说 "Add to Cart" 之后有一个按钮.我的测试在不调整 number_field 的情况下工作但是当我取消注释这一行时:

product_from_shop.fill_in 'quantity', with: 5

东西爆炸了。 Capybara::ElementNotFound

在我看来是关于这一行的:

<%= f.number_field :product_quantity, value: booking.product_quantity, min: 1, max: 999, title: 'quantity' %>

我尝试了几种方法,还搜索类或 ID。非工作。没有标签,那会使我的 View 困惑。

title在其他情况下工作正常,没有表格。

另外:我正在使用 capybara webkit,因为它使用 JS。

最佳答案

fill_in 使用 :fillable_field 选择器,它会找到任何可见的输入或文本区域元素,类型提交、图像、 radio 、复选框或文件除外。它将找到那些元素的 id、名称或占位符属性,或者通过关联标签元素中的文本。由于您没有关联的标签,因此只能使用 id、name 或 placeholder 属性。假设 product_from_shop 是您用于限定此 fill_in 范围的页面上的包装元素

product_from_shop.fill_in '<something>_product_quantity', with: 5

应该通过 id 查找和填充元素 - 将取决于表单适用的模型类型(只需查看实际的 HTML 以查看分配的 id)。

如果产品数量字段是 product_from_shop 中唯一可填写的字段,您也可以这样做

product_from_shop.fill_in with: 5 # same as product_from_shop.fill_in nil, with: 5

如果这些都不适合你,你可以转向使用类似的东西

product_from_shop.find(<more complicated query>).set '5'

为了澄清您对 title 之前工作的评论 - title 属性仅在查找链接和按钮时匹配。

关于ruby-on-rails - 是否可以用 Capybara 填写数字字段 wo/labels?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42457594/

相关文章:

javascript - 我的 ng-change 没有在我的 Angular/Rails 应用程序上触发

ruby-on-rails - `method_missing' : undefined method `mail' for Emailer:Class (NoMethodError)

ruby-on-rails - 使用 Rspec 测试无效电子邮件

ruby-on-rails - Heroku 上的 Ruby on Rails 部署 - bootstrap-sass

ruby - rails rspec - 如何检查模型常量?

ruby-on-rails - 如何使用 RSpec 测试 CSV 导入?

ruby-on-rails - Capybara::ElementNotFound: 无法找到 css "a"

ruby - `send_keys` 在 capybara 中做了什么

rspec - 无法使用 RSpec 测试获取 capybara 屏幕截图

javascript - 将 JavaScript 变量传递给 ruby​​-on-rails Controller