2017-02-25 68 views
0

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

+1

什么是'product_from_shop',元素的实际HTML是什么,以及您收到的完整错误消息是什么 –

回答

1

fill_in使用:fillable_field选择将发现任何明显的输入或textarea的区域除提交类型,图片,广播,复选框或文件之外的元素。它会查找这些元素的id,名称或占位符属性或者通过关联标签元素中的文本。由于您没有关联的标签,因此您只能使用id,name或placeholder属性。假设product_from_shop是您使用的是这一范围fill_in然后

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

应该找到并通过FILL_IN 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属性只匹配找到链接和按钮时。

+0

正确!我和中间一起去了。我注意到我实际上可以使用一个id,但这很奇怪,因为该页面显示多个产品。如果我需要在后期阶段进行区分,我总是可以将这一个包装在一些div中。谢谢! –

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