【问题标题】:capybara-webkit unable to execute javascript (minitest system test)capybara-webkit 无法执行 javascript(minitest 系统测试)
【发布时间】:2018-11-08 06:42:32
【问题描述】:

现在在谷歌上搜索了几天,但没有找到以下问题: 我使用 Minitest(5.11.3)、capybara(2.13.0) 和 capybara-webkit(1.14.0) 进行了系统测试,说测试在 2 个依赖于 javascript 的特定视图上失败:View1 hides/displays fields 根据一个下拉选择,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 没有被执行,因此,视图上的预期变化永远不会发生。 不用说,它在开发中可以无缝运行:)。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 2017-05-18
      • 1970-01-01
      • 2012-03-02
      相关资源
      最近更新 更多