我有一个简单的html.haml文件,它有一个text_field_tag和一个label_tag。我使用jQuery获取text_field_tag值,并将label_tag设置为on_change。当我在本地运行页面时,它工作得很好,我输入文本,'Display text input'反映了它,但在我的测试中,它填充了text_field_tag,但从未单击离开,因此从未触发on_change,因此此测试总是失败
it 'displays text in label_tag after input' do
@page.fill_in('textFieldTag', with: '420')
expect(@page).to have_content('420')
end
字符串
这张截图是水豚在测试运行过程中生成的
的数据
我相信这不起作用的原因是因为jQuery没有识别出变化,因为它看起来像光标仍然在输入,对吗?有人遇到过这种情况并找到了解决办法吗?
我发现的很多答案都涉及到睡觉或使用wait_until,但这些都没有帮助,因为我相信on_change没有注册,因为它认为Capybara仍然在打字。
1条答案
按热度按时间oxiaedzo1#
如果您使用的是默认驱动程序,则不支持JavaScript。https://github.com/teamcapybara/capybara#drivers
如果你的页面有一些使用JavaScript的交互,你需要使用另一个驱动程序,比如Selenium Webdriver:https://rubygems.org/gems/selenium-webdriver/versions/4.14.0
我用这个驱动程序来测试我的页面,用StimulusJS添加动态输入,它工作得很好。