如何使用水豚填充动态表单字段
How to fill dynamic form fields using capybara
我有一个包含 select 框和文本字段的表单。
文本字段根据select框select离子动态显示。如果 selectbox 的值为 "Yes",则显示文本字段,反之亦然。
我是 运行 一个 rspec 测试并用 "Yes"
填充了 select 框值
select 'Yes', from: 'property[have_water_bills]'
现在我想在文本字段中填写一个值
fill_in 'property[irrigation_cycle_count]', with: 5
但是我收到以下错误。
Capybara::ElementNotFound:
Unable to find field "property[irrigation_cycle_count]"
即水豚找不到动态元素。有谁知道如何解决这个问题?
从 select 中选择项目时,Poltergeist 不会生成 click
事件。它在选项上生成 focus
,在 select 上生成 change
,在选项上生成 blur
。这更像是用户 select 使用键盘而不是使用鼠标来编辑选项。无论如何,您可能应该执行在 change
事件上显示文本字段的逻辑,以便在人们使用鼠标或键盘在您的页面中导航时它可以正常工作。 运行 您对 change
事件的 show/hide 逻辑也更有意义,因为这是您真正关心的,而不是点击。
使用下面的代码终于让它工作了
page.execute_script("$('#have_water_bills').val('true').trigger('click')")
我有一个包含 select 框和文本字段的表单。
文本字段根据select框select离子动态显示。如果 selectbox 的值为 "Yes",则显示文本字段,反之亦然。 我是 运行 一个 rspec 测试并用 "Yes"
填充了 select 框值select 'Yes', from: 'property[have_water_bills]'
现在我想在文本字段中填写一个值
fill_in 'property[irrigation_cycle_count]', with: 5
但是我收到以下错误。
Capybara::ElementNotFound:
Unable to find field "property[irrigation_cycle_count]"
即水豚找不到动态元素。有谁知道如何解决这个问题?
从 select 中选择项目时,Poltergeist 不会生成 click
事件。它在选项上生成 focus
,在 select 上生成 change
,在选项上生成 blur
。这更像是用户 select 使用键盘而不是使用鼠标来编辑选项。无论如何,您可能应该执行在 change
事件上显示文本字段的逻辑,以便在人们使用鼠标或键盘在您的页面中导航时它可以正常工作。 运行 您对 change
事件的 show/hide 逻辑也更有意义,因为这是您真正关心的,而不是点击。
使用下面的代码终于让它工作了
page.execute_script("$('#have_water_bills').val('true').trigger('click')")