我有一个数字字段,需要一个 :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/