簡體   English   中英

量角器webdriver-manager永遠需要啟動Selenium

[英]Protractor webdriver-manager takes forever to start Selenium

我設法通過CI服務器上的Jenkins構建任務運行Protractor測試,但我遇到的問題是,當我運行webdriver-manager start它需要在Selenium服務器啟動之前永遠。

最終它啟動,控制台顯示:

INFO - Started SocketListener on 0.0.0.0:4444

但這有時需要大約5分鍾,而當我在Vagrant VM上嘗試相同時,它會立即啟動。

我正在運行無頭的Protractor測試,所以我使用xvfb-run來運行webdriver-manager start

這是我使用的shell腳本:

#!/bin/sh
export DISPLAY=:1

Xvfb $DISPLAY -ac -screen 0 1280x1024x8 &
sleep 1

xvfb-run webdriver-manager start --standalone 

這會立即啟動Vagrant VM上的Selenium服務器,但CI服務器上需要很長時間。 以下是CI服務器上腳本的輸出:

jenkins@vps1:~/workspace/cms$ ./runWebdriver 
Initializing built-in extension Generic Event Extension
Initializing built-in extension SHAPE
Initializing built-in extension MIT-SHM
Initializing built-in extension XInputExtension
Initializing built-in extension XTEST
Initializing built-in extension BIG-REQUESTS
Initializing built-in extension SYNC
Initializing built-in extension XKEYBOARD
Initializing built-in extension XC-MISC
Initializing built-in extension SECURITY
Initializing built-in extension XINERAMA
Initializing built-in extension XFIXES
Initializing built-in extension RENDER
Initializing built-in extension RANDR
Initializing built-in extension COMPOSITE
Initializing built-in extension DAMAGE
Initializing built-in extension MIT-SCREEN-SAVER
Initializing built-in extension DOUBLE-BUFFER
Initializing built-in extension RECORD
Initializing built-in extension DPMS
Initializing built-in extension Present
Initializing built-in extension DRI3
Initializing built-in extension X-Resource
Initializing built-in extension XVideo
Initializing built-in extension XVideo-MotionCompensation
Initializing built-in extension SELinux
Initializing built-in extension GLX
jenkins@vps1:~/workspace/cms$ seleniumProcess.pid: 27952
21:21:21.633 INFO - Launching a standalone server
Setting system property webdriver.chrome.driver to /var/lib/jenkins/.nvm/versions/io.js/v2.0.2/lib/node_modules/protractor/selenium/chromedriver
21:21:21.760 INFO - Java: Oracle Corporation 24.79-b02
21:21:21.760 INFO - OS: Linux 3.13.0-53-generic amd64
21:21:21.810 INFO - v2.45.0, with Core v2.45.0. Built from revision 5017cb8
21:21:21.960 INFO - Default driver org.openqa.selenium.ie.InternetExplorerDriver registration is skipped: registration capabilities Capabilities [{platform=WINDOWS, ensureCleanSession=true, browserName=internet explorer, version=}] does not match with current platform: LINUX
21:21:22.108 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
21:21:22.109 INFO - Version Jetty/5.1.x
21:21:22.111 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
21:21:22.112 INFO - Started HttpContext[/selenium-server,/selenium-server]
21:21:22.112 INFO - Started HttpContext[/,/] <-- this is where it hangs

幾分鍾后它最終運行,我可以執行Protractor測試,但這非常煩人,不適合在CI服務器上運行測試。

在Vagrant VM上,Selenium服務器立即啟動,輸出完全相同:

19:47:08.507 INFO - Java: Oracle Corporation 24.65-b04
19:47:08.509 INFO - OS: Linux 3.13.0-44-generic amd64
19:47:08.536 INFO - v2.45.0, with Core v2.45.0. Built from revision 5017cb8
19:47:08.663 INFO - Default driver org.openqa.selenium.ie.InternetExplorerDriver registration is skipped: registration capabilities Capabilities [{platform=WINDOWS, ensureCleanSession=true, browserName=internet explorer, version=}] does not match with current platform: LINUX
19:47:08.760 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
19:47:08.762 INFO - Version Jetty/5.1.x
19:47:08.763 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
19:47:08.764 INFO - Started HttpContext[/selenium-server,/selenium-server]
19:47:08.765 INFO - Started HttpContext[/,/]
19:47:08.800 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@14b43af3
19:47:08.801 INFO - Started HttpContext[/wd,/wd]
19:47:08.807 INFO - Started SocketListener on 0.0.0.0:4444
19:47:08.808 INFO - Started org.openqa.jetty.jetty.Server@16692a88

兩台機器都運行Ubuntu 14.04,但內核版本和Java版本略有不同(見輸出),CI服務器上的Protractor版本是2.1.0,在VM 1.8.0上。

這可能是問題還是我錯過了什么?

這個問題似乎與Selenium使用的隨機性來源有關。

有關詳情,請訪問: https//code.google.com/p/selenium/issues/detail?id = 1301

TL; DR解決方案:將-Djava.security.egd=file:///dev/urandom附加到啟動selenium的java命令。 您可能需要編輯webdriver-manager的配置。

對於那些使用gulp-protractor的人。 您可以在seleniumArgs屬性中傳遞java.security.egd。

seleniumArgs: ['--proxy=http://xxx:8080', '-Djava.security.egd=file:///dev/urandom']

為了讓chrome能夠在docker上工作,我必須以特權模式運行。 在docker撰寫:

privileged: true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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