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

时间:2014-10-30 17:23:38

标签: jquery rspec capybara poltergeist

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

  1. 抓住滑块手柄
  2. 滑动手柄
  3. 释放句柄

    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')")
    
  4. ...然后运行我的断言。此测试使用Selenium Web驱动程序运行并通过。不幸的是,出于性能原因,我们使用Poltergeist运行所有测试(在这种情况下,我们将Selenium作为调试用的选项)。出于某种原因,Poltergeist没有回应这些脚本(我们正在使用Capybara截图宝石,我可以看到滑块在测试完成后没有移动)。

    是否有人知道与语法,配置或其他相关的任何原因,为什么Poltergeist无法解释这些脚本?

1 个答案:

答案 0 :(得分:1)

在这种情况下,似乎Poltergeist使用触摸事件而不是点击。切换' mousedown',' mousemove'和' mouseup'触摸' touchstove' touchmove'和' touchend'分别解决了这个问题。希望这有助于将来的其他人。