我试图在angularjs.org的angular-phonecat中完成教程。在stetp三中,我用量角器进行端到端测试时出错。这是错误代码。
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
这里出了什么问题?
答案 0 :(得分:3)
问题似乎是由minijasminenode的最新1.0.0版本引起的。 作为一个临时的解决方法,这个黑客工作:
" minijasminenode":"< 1.0.0",
rm -r node_modules / protractor / node_modules / minijasminenode
cd node_modules / protractor&& npm install
您的e2e测试现在应该运行。可能有更优雅的方式实现这一目标。
答案 1 :(得分:2)
安德鲁的回答对我有用。谢谢安德鲁。
顺便说一句,我还将'browserName':'chrome'更改为'browserName':'firefox',因为我的linux框中没有安装chrome。然后就行了。
答案 2 :(得分:0)
添加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
}
};
答案 3 :(得分:0)
无论我在哪里发现哪种解决方案,我都遇到了类似的问题。当我通过XAMPP运行大部分项目时,我发现我的问题是由于配置页面上的端口设置错误。
\测试\量角器-config.js
baseUrl: 'http://localhost:8383/', <-- Altered to suit xampp localhost port
以前是
baseUrl: 'http://localhost:8000/',
希望这也可以帮助其他人。
答案 4 :(得分:0)
我尝试了所有解决方案,但仍然遇到错误。将主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'
不过特别肯定使用早期版本是不是一个好主意。