ruby-on-rails 使用Capybara填充text_field_tag不会触发jQuery on_change

pkmbmrz7  于 2023-11-20  发布在  Ruby
关注(0)|答案(1)|浏览(117)

我有一个简单的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仍然在打字。

oxiaedzo

oxiaedzo1#

如果您使用的是默认驱动程序,则不支持JavaScript。https://github.com/teamcapybara/capybara#drivers
如果你的页面有一些使用JavaScript的交互,你需要使用另一个驱动程序,比如Selenium Webdriver:https://rubygems.org/gems/selenium-webdriver/versions/4.14.0
我用这个驱动程序来测试我的页面,用StimulusJS添加动态输入,它工作得很好。

相关问题