Capybara-Webkit 无法执行 JavaScript(minitest system test)



已经在谷歌上搜索了几天,对以下问题没有运气: 我有一个使用 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 没有被执行,因此,视图上的预期更改永远不会发生。 不用说,它在开发:)中无缝运行。

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

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

相关内容

最新更新