capybara-webkit无法执行javascript(minitest系统测试)

时间:2018-05-29 14:47:15

标签: javascript ruby-on-rails capybara minitest capybara-webkit

现在谷歌搜索了几天,对以下问题没有好运: 我使用Minitest(5.11.3),capybara(2.13.0)和capybara-webkit(1.14.0)进行系统测试,表示测试失败了2个依赖于javascript的特定视图:View1根据以下内容隐藏/显示字段一个下拉选择,View2根据用户在另一个下拉列表中的选择,通过AJAX请求收取字段数据。

当前配置:

require 'test_helper'
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
  driven_by :webkit
  Capybara.javascript_driver = :webkit
end

架空配置(偏执,以防万一)

setup do
  Capybara.current_driver = Capybara.javascript_driver
end

仍然,点击和断言失败,因为Javascript没有被执行,因此,对视图的预期更改永远不会发生。 毋庸置疑,它在开发中无缝运行:)。

1 个答案:

答案 0 :(得分:1)

这很可能是因为您正在使用基于QtWebkit的capybara-webkit。如果使用QtWebkit的任何发行版本构建,它不支持JS&gt; ES5.1。这意味着如果您正在使用任何现代JS功能(let / const /方法添加到ES6中的标准对象等)并且不能完全转换/ polyfilling与ES5兼容JS会抛出错误,因此不会运行。您可以通过运行selenium(如果您需要无头的无头镀铬)来确认这一点,并查看您的测试是否在那里工作。

注意:如果在系统测试中使用javascript_driver,则不需要直接设置driven_by,并且您可能希望将Capybara升级到至少最新的2.x版本。