簡體   English   中英

當 webdriver-manager 啟動完成時運行量角器

[英]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 %1pkill 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM