我在我的黄瓜特征文件的步骤定义中使用了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
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),但是我遇到了构建错误,即使它确实有效,也不是长期解决方案来使用更旧的版本。
对此问题的任何帮助将不胜感激。 谢谢
答案 0 :(得分:0)
capybara-webkit最多支持ES5。您正在使用ES6功能(WeakMap等)。为了使用capybara-webkit测试您的应用程序,您的应用程序需要使用babel等完全转换/ polyfilled到ES5兼容性。恢复到较旧的Qt,只会使capybara-webkit中的支持级别变差,所以这甚至都不是短期解决方案。如果你不想转换/ polyfil,另一个解决方案就是从使用capybara-webkit变为使用带无头镀铬的selenium(虽然目前也有一些不起作用的东西 - 调整窗口,多个窗口)