jquery - Capybara jQuery 脚本适用于 Selenium 驱动程序,但不适用于 Poltergeist

标签 jquery rspec capybara poltergeist

我正在尝试通过在 Capybara RSpec 测试中执行一系列脚本来测试 jQuery slider 。我的脚本执行以下操作:

  1. 捕获 slider handle
  2. 滑动 handle
  3. 释放 handle

    execute_script("$('#PMPM-slider .ngrs-handle-min').trigger(jQuery.Event('mousedown', { clientX: 70, clientY: 77 }))")
    execute_script("$('#PMPM-slider .ngrs-handle-min').trigger(jQuery.Event('mousemove', { clientX: 100, clientY: 77 }))")
    execute_script("$('#PMPM-slider .ngrs-handle-min').trigger('mouseup')")
    

...然后运行我的断言。该测试使用 Selenium Web 驱动程序运行并通过。不幸的是,出于性能原因,我们使用 Poltergeist 运行所有测试(在这种情况下,我们保留 Selenium 作为调试目的的选项)。由于某种原因,Poltergeist 不响应这些脚本(我们正在使用 Capybara 屏幕截图 gem,我可以看到测试完成时 slider 尚未移动)。

有谁知道 Poltergeist 无法解释这些脚本的任何原因(与语法、配置或其他相关)吗?

最佳答案

在这种情况下,Poltergeist 似乎使用触摸事件而不是单击事件。将“mousedown”、“mousemove”和“mouseup”分别切换为“touchstart”、“touchmove”和“touchend”可以解决该问题。希望这对将来的其他人有帮助。

关于jquery - Capybara jQuery 脚本适用于 Selenium 驱动程序,但不适用于 Poltergeist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26659473/

相关文章:

java - 是否可以使用 Capybara 测试 Java 应用程序?

javascript - 将错误从 Controller 显示到 Bootstrap Alert

javascript - 如何使用来自 Controller 操作的 post 方法将 grails 模型呈现为 javascript?

ruby - 为什么我不能让 be_nil 测试在 Rspec 中失败

ruby-on-rails - rspec Controller : Files aren't passing through.中的Rails 'post'命令(是否有多部分设置?)

ruby-on-rails - Capybara + Selenium + RSpec —将JS设置为true时发生LoadError

javascript - 如何限制使用 icheck jquery 插件选中的复选框?

javascript - 更改某些字符的颜色

ruby-on-rails - 格式化 JSON API 的 Active Record 时间戳

ruby-on-rails - 为什么即使我删除了 application.js 文件,Capybara + Rspec 测试仍然通过?