在webdriver-manager启动完成时运行量角器

Ako*_*s K 3 selenium node.js angularjs protractor

我在编写用于启动量角器测试的npm脚本时遇到麻烦。遵循文档https://github.com/angular/protractor/blob/master/docs/server-setup.md似乎首先我必须运行

webdriver-manager start
Run Code Online (Sandbox Code Playgroud)

并在我开始实际测试时使其运行

./node_modules/.bin/protractor test/integration/conf.js
Run Code Online (Sandbox Code Playgroud)

我希望这两个步骤可以在一个npm脚本中执行,所以最终会得到这样的结果:

"scripts": {
    "protractor-update": "./node_modules/.bin/webdriver-manager update",
    "protractor-start": "./node_modules/.bin/webdriver-manager start",
    "protractor-init": "npm run protractor-update && npm run protractor-start",
    "test-protractor": "npm run protractor-start && ./node_modules/.bin/protractor test/integration/conf.js",
},
Run Code Online (Sandbox Code Playgroud)

现在很明显的问题是,./node_modules/.bin/webdriver-manager start它不会返回退出代码,因此它永远不会执行下一个命令。

实现这一目标的正确方法是什么?

小智 5

我和你有同样的问题。这是我在StackOverflow上浏览并在同事的帮助下找到的解决方案。

在package.json中:

"scripts": {
  "e2e": "bash run-e2e-tests.sh"
}
Run Code Online (Sandbox Code Playgroud)

bash文件:

# Start selenium server and trash the verbose error messages from webdriver
webdriver-manager start 2>/dev/null &
# Wait 3 seconds for port 4444 to be listening connections
while ! nc -z 127.0.0.1 4444; do sleep 3; done
#  run protractor
protractor test/e2e/conf.js
Run Code Online (Sandbox Code Playgroud)