[英]Running protractor when webdriver-manager start finishes
我在編寫用於啟動量角器測試的 npm 腳本時遇到問題。 按照文檔https://github.com/angular/protractor/blob/master/docs/server-setup.md似乎首先我必須運行
webdriver-manager start
並在我開始實際測試時讓它運行
./node_modules/.bin/protractor test/integration/conf.js
我希望這兩個步驟在一個 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",
},
現在顯然問題是./node_modules/.bin/webdriver-manager start
不返回退出代碼,因此它永遠不會執行下一個命令。
實現這一目標的正確方法是什么?
我遇到了和你一樣的問題。 這是我在瀏覽StackOverflow並在我的同事的幫助下找到的解決方案。
在package.json中:
"scripts": {
"e2e": "bash run-e2e-tests.sh"
}
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
答案在於shell腳本基礎知識。
將webdriver放在后台用&
所以舉個例子
webdriver-manager start &
這將運行webdriver-manager,然后立即將控制權返回給shell,允許您輸入后續命令。
在通過某種機制完成測試后,您將要殺死webdriver-manager,例如kill %1
或pkill webdriver-manager
。 否則你最終會有幾十個未使用的webdriver進程運行...
您可以同時使用來解決您的問題。
與以下命令同時安裝。
npm install concurrently --save
然后在你的 package.json 中使用,如下所示:
"e2e:all-steps": "concurrently -k -s first \"./node_modules/.bin/webdriver-manager update\" \"./node_modules/.bin/webdriver-manager start\" \"npm run protractor-update && npm run protractor-start\" \"npm run protractor-start && ./node_modules/.bin/protractor test/integration/conf.js\""
希望有幫助。 :-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.