ruby-on-rails - 如何在 capybara 测试中触发 keyup。我已经尝试了所有标准方法
问题描述
我编写了以下 rspec/capybara 测试:
scenario "admin can create patient invoices with discounted items", driver: :poltergeist do
product = create(:product, practice_group: practice_group)
patient = create(:patient)
location = create(:location, practice_group: practice_group)
practice_group
login_as_admin(admin)
visit "/invoices/new?patient_id=#{patient.id}"
select location.name, :from => "invoice_location_id"
add_product_to_invoice(product)
add_discount_to_product(0.05)
submit_invoice_form
expect(Invoice.count).to eq(1)
expect(Invoice.last.total_amount).to eq("£9.50")
end
def add_discount_to_product(discount)
find(".discount-input").send_keys((discount * 100).to_s)
page.execute_script("$('.discount-input').trigger('keyup')")
end
我尝试了各种不同的策略来触发这个按键事件,但是 jQuery.on
监听器在测试期间没有触发。
我正在使用 poltergeist 驱动程序。
关于如何让这个事件触发的任何建议?似乎水豚.trigger
不适用于 poltergeist。
解决方案
send_keys
将发送 keyup 事件 - 更有可能您的页面上实际上有 JS 不能由 Poltergeist 运行,因为它不支持现代 JS/CSS。尝试使用 selenium 或新的直接到 Chrome CDP 驱动程序之一(如幻影)运行测试
推荐阅读
- spring - Spring Boot 中的自定义自动配置无法使用 ConditionalOnBean 找到 DataSource
- android - 如何在 Kotlin 中创建项目 | 安卓工作室 3.1.1
- javascript - Angular 5 设置非角度属性的值
- ada - Ada - 访问不断的混乱
- pdf - 软件 RIP 必须能够读取或识别 PDF 中的颜色信息
- angular - 排序在 primeNG 表中无法正常工作。在排序模式下显示不均匀的数据?
- r - 在 PCA ggbiplot 的图例中附加离散值的计数
- python - Flask 对象没有属性 app_context
- python - 我如何去 python 中的文件夹在那里执行 python 脚本?
- laravel - 在 AWS 上运行的 Laravel 5 中终止的会话和身份验证