我有一个数字字段,在: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。不工作。没有标签会使我的观点变得混乱。
title
在其他情况下工作正常,没有表格。
另外:我使用的是capybara webkit,因为它使用JS。
答案 0 :(得分:2)
fill_in
使用:fillable_field选择器,它将查找除提交,图像,广播,复选框或文件类型之外的任何可见输入或textarea区域元素。它将找到那些元素id,name或placeholder属性,或者通过关联标签元素中的文本。由于您没有关联的标签,因此您需要使用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
属性仅在找到链接和按钮时匹配。
答案 1 :(得分:0)
假设你在Rails中使用form_for
,那么它应该生成一个你可以使用的id。我不熟悉product_from_shop.fill_in
表单,我通常使用page
,但请尝试其中一种:
page.fill_in :product_from_shop_product_quantity, with: 5
或
page.fill_in "product_from_shop_product_quantity", with: 5