我正在尝试通过在 Capybara RSpec 测试中执行一系列脚本来测试 jQuery slider 。我的脚本执行以下操作:
- 捕获 slider handle
- 滑动 handle
释放 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/