2015-05-31 17 views
5

Udało mi się uzyskać testy kątomierza uruchamiane przez zadanie budowania Jenkins na serwerze CI, ale mam problem z tym, że po uruchomieniu webdriver-manager start trwa to na zawsze przed uruchomieniem serwera Selenium.Kątomierz webdriver-manager trwa wiecznie, aby uruchomić Selenium

końcu zaczyna i konsola pokazuje:

INFO - Started SocketListener on 0.0.0.0:4444

ale czasami trwa do około 5 minut, podczas gdy próbuję to samo na Vagrant VM zaczyna się natychmiast.

Używam testów bezgłowych kątomierza, więc używam xvfb-run do uruchamiania webdriver-manager start.

Oto skrypt używam:

#!/bin/sh 
export DISPLAY=:1 

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

xvfb-run webdriver-manager start --standalone 

Ten natychmiast uruchamia serwer selen na Vagrant VM, ale to zajmuje dużo czasu na serwerze CI. Oto wynik działania skryptu na serwerze CI:

[email protected]:~/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 
[email protected]:~/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 

Po kilku minutach wreszcie biegnie i mogę wykonać testy kątomierz, ale jest to bardzo denerwujące i nie nadaje się do uruchamiania testów na serwerze CI.

Na Vagrant VM serwer Selen rozpoczyna się natychmiast, a wyjście jest identyczna do tej pory:

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 [email protected] 
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 [email protected] 

Obie maszyny uruchomić Ubuntu 14.04 ale wersja jądra i wersji Javy są nieco inaczej (patrz wyjście) , Wersja kątomierza na serwerze CI to 2.1.0, na maszynie wirtualnej 1.8.0.

Czy to może być problem, czy też coś tu brakuje?

+0

Cześć Danny, rozwiązałeś to, próbuję tego samego, ale nie udało mi się. możesz pomóc, publikując to, co zrobiłeś. Naprawdę doceniam. – Nick

+0

@Nick: Nie próbowałem jeszcze, ale obecnie pracuję nad testami ponownie, więc opublikuję tutaj jak najszybciej. –

Odpowiedz

6

Problem wydaje się być związany ze źródłem losowości, z którego korzysta Selen.

Więcej informacji tutaj: https://code.google.com/p/selenium/issues/detail?id=1301

TL; DR rozwiązanie: -Djava.security.egd=file:///dev/urandom dołączyć do polecenia java który uruchamia selen. Może być konieczna edycja konfiguracji webdriver-manager.

+0

Dziękuję bardzo! Nie jestem pewien, gdzie powinienem to dodać, ponieważ nie używam opcji seleniumServerJar w protokractor.conf.js, ale seleniumAddress. Czy powinienem dodać go do tego pliku lub innego? –

+0

W pliku 'webdriver-manager' poszukaj sekcji z' case 'start': 'i dodaj wiersz' args.push ('-Djava.security.egd = file: ///dev/./urandom'); 'powyżej linii' var seleniumProcess = spawnCommand ('java', args); ' – martin770

2

Dla tych, którzy używają kątomierza. Możesz przekazać java.security.egd we właściwości seleniumArgs.

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

Aby uzyskać chrom do pracy na docker musiałem uruchomić w trybie uprzywilejowanym. W oknie dokowanym:

privileged: true 
Powiązane problemy