使用Protractor进行端到端测试出现错误

6

我正在尝试学习angularjs.org的angular-phonecat教程。在第三步中,使用protractor进行端到端测试时遇到了错误。以下是错误代码:

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 installnpm update,看起来像是一个损坏的文件。 - maurycy
5个回答

3
问题似乎是由最新的1.0.0版minijasminenode引起的。 作为一个临时解决办法,可以使用以下方法:
编辑node_modules/protractor/package.json文件,并将minijasminenode依赖项更改为<1.0.0,使其变成如下内容:
"minijasminenode": "<1.0.0",
删除minijasminenode目录:
rm -r node_modules/protractor/node_modules/minijasminenode 重新安装所需的模块:
cd node_modules/protractor && npm install
现在您的e2e测试应该可以运行了。可能有更优雅的方法来实现这一点。
另请参见https://github.com/angular/protractor/issues/931

2

安德鲁的回答对我有用。谢谢安德鲁。

顺便说一下,由于我的Linux系统中没有安装Chrome浏览器,所以我也将“browserName”:'chrome'更改为“browserName”:'firefox'。然后就可以正常工作了。


1
加1表示添加Firefox。 - Venkat
2
这应该是一个注释,而不是一个答案。 - Sajidur Rahman

0

添加 Firefox 后,Protractor 测试可以在 Windows 7 上运行,而在 Mac 上 Chrome 运行良好。以下是完整的测试 / 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(8+)浏览器上托管Selenium服务器? 我参考了这个https://code.google.com/p/selenium/wiki/DesiredCapabilities。 - Pratik Pattanayak

0

无论我在哪里找到的已发布解决方案,我都遇到了类似的问题。由于我大多数项目都是通过XAMPP运行的,因此我发现我的问题是由于配置页面上端口设置错误导致的。

\test\protractor-config.js

 baseUrl: 'http://localhost:8383/',     <-- Altered to suit xampp localhost port

以前曾经

 baseUrl: 'http://localhost:8000/',

希望这也能帮助到其他人。


0

我尝试了所有的解决方案,但仍然出现错误。在主要的 package.json 文件中将 protractor 版本更改为“~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'

不是特别确定使用早期版本是否是一个好主意。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接