现在谷歌搜索了几天,对以下问题没有好运: 我使用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没有被执行,因此,对视图的预期更改永远不会发生。 毋庸置疑,它在开发中无缝运行:)。
答案 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版本。