量角器给出错误的端到端测试

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 installnpm 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 中重试失败的端到端测试?

vue-cli 脚手架基于Nightwatch的端到端测试环境的过程

如何将跨微服务的端到端测试包含到多个持续交付管道中?

nodejs REST Api的端到端分析

解析Ceph: 数据的端到端正确性和 Scrub 机制