我使用Protractor测试我的网络应用程序。这需要运行两个程序:
webdriver-manager start
运行Selenium服务器。protractor conf.js
启动Protractor,然后与Selenium服务器通信以控制浏览器。由于在单独的窗口中运行这些命令很烦人,我的package.json中有以下内容:
"scripts": {
"webdriver-start": "webdriver-manager start",
"protractor": "protractor conf.js",
"pretest": "webdriver-manager update",
"test": "npm-run-all -p -r webdriver-start protractor"
}
这让我只用npm run test
完成所有事情。
不幸的是,Selenium会向控制台输出一个很多的噪音,这使得无法看到格式良好的Jasmine报告输出。
我会使用webdriver-manager start --quiet
来限制控制台输出,但there is a bug会导致我的测试挂起。
为了解决这种情况,我尝试了
npm run test --silent
,但这只涉及npm自己的日志,而不是脚本的日志(同样适用于将|| true
附加到脚本中)webdriver-manager start --detach
,但这仍记录在同一个控制台中是否有任何解决方法可以隐藏单个npm脚本的输出?
答案 0 :(得分:0)
这些脚本本质上是shell命令,因此您可以使用>
将输出重定向到控制台之外。
由于我使用Windows,因此this answer通过Anders Lindahl调整了命令,将stdout和stderr for webdriver重定向到NUL
:
"scripts": {
"webdriver-start": "webdriver-manager start > NUL 2> NUL",
"protractor": "protractor conf.js",
"pretest": "webdriver-manager update",
"test": "npm-run-all -p -r webdriver-start protractor"
}
在其他平台上,您可能会改为redirect to /dev/null
。
如果您需要记录所有内容而不是删除它,您可以执行以下操作将其放入日志文件中:
"scripts": {
"webdriver-start": "webdriver-manager start > out.log 2> err.log",
"protractor": "protractor conf.js",
"pretest": "webdriver-manager update",
"test": "npm-run-all -p -r webdriver-start protractor"
}