Capybara-Webkit:缺少 js/React 并且找不到变量:WeakMap

Posted

技术标签:

【中文标题】Capybara-Webkit:缺少 js/React 并且找不到变量:WeakMap【英文标题】:Capybara-Webkit: js/React is missing & Can't find variable: WeakMap 【发布时间】:2017-07-26 00:30:43 【问题描述】:

我在我的黄瓜特征文件的步骤定义中使用 Capybara-Webkit。此特定场景测试是否成功登录到系统。 Capybara 加载登录表单,完美输入用户名和密码,但是当它点击登录按钮时,它会挂在加载页面上并且永远无法正确登录。

打印到控制台的错误是:

    ReferenceError: Can't find variable: WeakMap

    Error: js/React is missing

    |TypeError: undefined is not an object (evaluating 'reagent.impl.util.memoize_1.call') TypeError: undefined is not an object (evaluating 'window["deps"]["fine"]') Feature :formatters cannot be installed. Unsupported javascript context: Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/538.1 (Khtml, like Gecko) capybara-webkit Safari/538.1. Error: js/ReactDOM is missing (typeof goog == \"undefined\") console.warn(\"ClojureScript could not load :main, did you forget to specify :asset-path?\");goog.require(\"myapp.app\")

相关信息:

在 /usr/local/Cellar/qt@5.5/5.5.1_1/lib 中使用 Qt 5.5.1 版

echo $PATH => /usr/local/opt/qt@5.5/bin

使用 macOS Sierra 10.12.5

Xcode 版本 8.3.3

根据我从论坛收集到的信息(特别是这个:https://github.com/thoughtbot/capybara-webkit/issues/849),QtWebKit:5.5.1 对 es6 的支持可能是问题所在。我尝试安装旧版本的 qt (qt-everywhere-opensource-src-5.4.2),但我遇到了构建错误,即使它确实有效,使用旧版本也不是长期解决方案。

对此问题的任何帮助将不胜感激。 谢谢

【问题讨论】:

【参考方案1】:

capybara-webkit 最多支持 ES5。您正在使用 ES6 功能(WeakMap 等)。为了使用 capybara-webkit 测试您的应用程序,您的应用程序需要使用 babel 等完全转译/polyfill 到 ES5 兼容性。恢复到较旧的 Qt 只会使 capybara-webkit 中的支持级别更差,所以这甚至不是短期解决方案。如果您不想转译/polyfil,另一种解决方案是从使用 capybara-webkit 更改为使用 selenium 和 headless chrome(尽管这有一些目前也不起作用 - 调整窗口大小、多个窗口)

【讨论】:

嗯,好的。感谢您的澄清。但是,如果我将 selenium 与 headless chrome 一起使用,则无法无头地测试 Safari 或 Firefox,对吗? @wwyliemod Firefox 有一个无头模式(如果在某些平台上尚不可用,很快就会推出 - bugzilla.mozilla.org/show_bug.cgi?id=1338004),Safari 没有 - 但如果使用水豚,你不会测试当前的 Safari 或 Firefox -无论如何,webkit。 哦,我明白了。尝试了带有无头镀铬的水豚硒,效果很好。认为我们现在会坚持下去。谢谢大家的帮助!

以上是关于Capybara-Webkit:缺少 js/React 并且找不到变量:WeakMap的主要内容,如果未能解决你的问题,请参考以下文章

Capybara-webkit 抛出找不到变量:$

如何使用 capybara-webkit 获取响应头和时间

$.ajax 删除请求未在 capybara-webkit 中发送数据参数

Capybara-Webkit:page.should_content() 没有实现?

在 Capybara-Webkit 中显示 @font-face 字体

在 capybara-webkit 中禁用声音