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

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

谷歌搜索了几天,但没有解决以下问题: 我使用 Minitest(5.11.3)、capybara(2.13.0) 和 capybara-webkit(1.14.0) 进行了系统测试,说测试在 2 个依赖 javascript 的特定 View 上失败: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 没有被执行,因此, View 上的预期更改永远不会发生。 不用说,它在开发中无缝工作:)。

最佳答案

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

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

关于javascript - capybara-webkit 无法执行 javascript(minitest 系统测试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50587244/

相关文章:

javascript - PHP 查询数组到 Javascript Google map 迭代器

javascript - 使用 ionic 3 框架的 Android 上的 SMS url 无法打开消息应用程序

ruby-on-rails - link_to 为 :protocol for https

capybara ::未找到元素

ruby-on-rails - rails : RSpec - undefined method `cookie_jar' for nil:NilClass

javascript - 映射有条件改变的嵌套字段

javascript - Chrome 扩展程序中的流程顺序

mysql - 从每列中选择不同的值

ruby-on-rails - 是否可以从 ActiveRecord 组查询中返回带有命名键的哈希?

ruby-on-rails - Rspec - 如何在每次测试后清理数据库