使用Capybara填充text_field_tag不会触发jQuery on_change

问题描述 投票:0回答:1

我有一个简单的 html.haml 文件,其中有一个 text_field_tag 和一个 label_tag。 我使用 jQuery 来获取 text_field_tag 值,并使用该值 on_change 设置 label_tag。 当我在本地运行页面时,它工作得很好,我输入文本,“显示文本输入”反映了它,但在我的测试中,它填充了 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

此屏幕截图是 Capybara 在测试运行期间生成的

我是否正确地相信这不起作用的原因是因为 jQuery 无法识别更改,因为它看起来光标仍在打字?有没有人遇到过这个问题并找到解决方法?

我发现的很多答案都涉及睡眠或使用 wait_until,但这些都没有帮助,因为我相信 on_change 没有注册,因为它认为 Capybara 仍在打字。

ruby-on-rails capybara haml
1个回答
0
投票

如果您使用默认驱动程序,它不支持Javascript。 https://github.com/teamcapybara/capybara#drivers

如果您的页面有一些使用 javascript 的交互,您需要使用另一个驱动程序,例如 Selenium Webdriver: https://rubygems.org/gems/selenium-webdriver/versions/4.14.0

我使用这个驱动程序来测试我的页面,使用 StimulusJS 添加动态输入,效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.