Ruby on rails 4 如何使用capybara填充动态表单字段

Ruby on rails 4 如何使用capybara填充动态表单字段,ruby-on-rails-4,rspec,capybara,poltergeist,Ruby On Rails 4,Rspec,Capybara,Poltergeist,我有一个表单,它包含一个选择框和一个文本字段 文本字段根据选择框的选择动态显示。如果selectbox的值为Yes,则将显示文本字段,反之亦然。 我正在运行rspec测试,并在选择框中填入Yes select 'Yes', from: 'property[have_water_bills]' 现在我想在文本字段中填充一个值 fill_in 'property[irrigation_cycle_count]', with: 5 但是我得到了以下错误 Capybara::ElementNotFo

我有一个表单,它包含一个选择框和一个文本字段

文本字段根据选择框的选择动态显示。如果selectbox的值为Yes,则将显示文本字段,反之亦然。 我正在运行rspec测试,并在选择框中填入Yes

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]"

也就是说,水豚无法找到动力元素。有人知道如何解决这个问题吗?

Poltergeist在从选择菜单中选择项目时不会生成单击事件。它在选项上生成焦点,在选择上生成更改,在选项上生成模糊。这更像是用户用键盘而不是鼠标选择选项。不管怎样,您可能应该按照逻辑在更改事件上显示文本字段,这样当人们使用鼠标或键盘在页面上导航时,它就可以工作了。在更改事件上运行显示/隐藏逻辑也更有意义,因为这才是您真正关心的,而不是单击。

最后使用以下代码实现了这一点

page.execute_script("$('#have_water_bills').val('true').trigger('click')")

使用什么事件触发下一个字段更改、模糊等的显示?。另外,您确定此测试正在使用Poltergeist运行吗?单击事件用于触发下一个字段。是的,测试是用Poltergeist运行的,所以你对你的应用程序不能通过键盘使用没问题吧?