量角器给出错误的端到端测试
Posted
技术标签:
【中文标题】量角器给出错误的端到端测试【英文标题】:End to End testing with protractor giving error 【发布时间】:2014-08-04 18:15:42 【问题描述】:我试图通过 angularjs.org 的 angular-phonecat 中的教程。在第三步中,我在使用量角器进行端到端测试时遇到错误。这是错误代码。
Using ChromeDriver directly...
Cannot read property 'matcherFn_' of undefined
[launcher] Runner Process Exited With Error Code: 1
npm ERR! angular-phonecat@0.0.0 protractor: `protractor test/protractor-conf.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the angular-phonecat@0.0.0 protractor script.
npm ERR! This is most likely a problem with the angular-phonecat package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! protractor test/protractor-conf.js
npm ERR! You can get their info via:
npm ERR! npm owner ls angular-phonecat
npm ERR! There is likely additional logging output above.
npm ERR! System Windows_NT 6.2.9200
npm ERR! command "c:\\Program Files\\nodejs\\node.exe" "c:\\Program Files\\nodej
s\\node_modules\\npm\\bin\\npm-cli.js" "run" "protractor"
npm ERR! cwd c:\angular-phonecat\angular-phonecat
npm ERR! node -v v0.10.28
npm ERR! npm -v 1.4.9
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! c:\angular-phonecat\angular-phonecat\npm-debug.log
npm ERR! not ok code 0
这里出了什么问题?
【问题讨论】:
在您的目录上运行npm install
或 npm update
,它看起来像一个损坏的文件
【参考方案1】:
问题好像是最新的1.0.0版本的minijasminenode引起的。 作为一种临时解决方法,这个 hack 起作用了:
编辑 node_modules/protractor/package.json 并将 minijasminenode 依赖项更改为删除 minijasminenode 目录:"minijasminenode": "
重新安装所需的模块:rm -r node_modules/量角器/node_modules/minijasminenode
cd node_modules/protractor && npm install
您的 e2e 测试现在应该可以运行了。可能有更优雅的方式来实现这一点。
另见https://github.com/angular/protractor/issues/931
【讨论】:
【参考方案2】:安德鲁的回答对我有用。谢谢安德鲁。
顺便说一句,我还将 'browserName': 'chrome' 更改为 'browserName': 'firefox',因为我的 linux 机器中没有安装 chrome。然后就可以了。
【讨论】:
加1用于添加firefox 这应该是一条评论。没有答案。【参考方案3】:添加 firefox 使量角器测试在我的 windows 7 上运行,而在 mac chrome 上运行良好,这里是完整的 test/protractor-conf.js 文件
exports.config =
allScriptsTimeout: 11000,
specs: [
'e2e/*.js'
],
capabilities:
'browserName': 'firefox'
,
firefoxOnly: true,
baseUrl: 'http://localhost:2000/',
framework: 'jasmine',
jasmineNodeOpts:
defaultTimeoutInterval: 30000
;
【讨论】:
+1 为此...如果我想使用 IE 所有版本作为 browserName:'internet explorer'...应该用什么替换上面的 Internet Explorer 以在 IE 上托管 selenium 服务器(8+ ) 浏览器?我提到了这个code.google.com/p/selenium/wiki/DesiredCapabilities【参考方案4】:无论我可以在任何地方找到哪个已发布的解决方案,我都遇到了类似的问题。当我通过 XAMPP 运行大部分项目时,我发现我的问题是由于配置页面上的端口设置错误。
\test\protractor-config.js
baseUrl: 'http://localhost:8383/', <-- Altered to suit xampp localhost port
以前是
baseUrl: 'http://localhost:8000/',
希望这也可以帮助其他人。
【讨论】:
【参考方案5】:我尝试了所有解决方案,但仍然出现错误。将主 package.json 文件中的量角器版本更改为“~0.20.1”,使其读取 "protractor": "~0.20.1",
并以管理员身份运行命令行为我工作。
第一次运行后,ChromeDriver 出现错误。我通过将 protractor-conf.js 文件中的 chromeOnly: True
属性替换为驱动程序本身的完整路径来解决此问题,在我的例子中:chromeDriver: 'F:/Documents/Angular/angular-phonecat/node_modules/protractor/selenium/chromedriver_2.9.zip'
虽然不太确定使用早期版本是否是个好主意。
【讨论】:
以上是关于量角器给出错误的端到端测试的主要内容,如果未能解决你的问题,请参考以下文章
nightwatch 基于Webdriver的端到端自动化测试框架
如何使用 Mocha 在 Detox 中重试失败的端到端测试?