2015-05-31 9 views
5

Sono riuscito a ottenere i test del goniometro eseguiti attraverso un'attività di Jenkins su un server CI, ma sto avendo il problema che quando eseguo webdriver-manager start ci vuole sempre prima dell'avvio del server Selenium.Il webdriver-manager del goniometro impiega per sempre ad avviare Selenium

Alla fine si inizia e la console mostra:

INFO - Started SocketListener on 0.0.0.0:4444

ma questo a volte richiede fino a circa 5 minuti, mentre quando provo lo stesso su un Vagrant VM si avvia immediatamente.

Sono in esecuzione test di goniometro senza testa, quindi uso xvfb-run per eseguire webdriver-manager start.

Ecco lo script di shell che uso:

#!/bin/sh 
export DISPLAY=:1 

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

xvfb-run webdriver-manager start --standalone 

Questo avvia immediatamente il server Selenio sulla Vagrant VM, ma ci vuole molto tempo sul server CI. Ecco l'output dello script sul server 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 

Dopo qualche minuto finalmente corre e posso eseguire i test goniometro, ma questo è molto fastidioso e non è adatto per l'esecuzione di test su un server CI.

Sulla Vagrant VM server selenio inizia immediatamente e l'uscita è identico fino a questo punto:

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] 

Entrambe le macchine eseguire Ubuntu 14.04, ma la versione del kernel e la versione di Java sono leggermente diversi (vedi output) , Versione goniometro sul server CI è 2.1.0, sulla VM 1.8.0.

Potrebbe essere questo il problema o mi manca qualcosa qui?

+0

Ciao Danny, hai risolto questo, sto provando lo stesso ma non ho avuto successo. puoi per favore aiutare postando ciò che hai fatto per lavorare. Lo apprezzerei davvero. – Nick

+0

@Nick: non ho ancora provato ma sto attualmente lavorando di nuovo sui test, quindi posterò qui al più presto. –

risposta

6

Il problema sembra essere correlato alla fonte di casualità che il selenio sta utilizzando.

Maggiori informazioni qui: https://code.google.com/p/selenium/issues/detail?id=1301

TL; DR soluzione: accoda -Djava.security.egd=file:///dev/urandom al comando java che lancia il selenio. Potrebbe essere necessario modificare la configurazione di webdriver-manager.

+0

Grazie mille! Non sono sicuro di dove dovrei aggiungere questo dato che non sto usando l'opzione seleniumServerJar in protractor.conf.js ma seleniumAddress. Dovrei aggiungerlo a questo o ad un altro file? –

+0

Nel file 'webdriver-manager', cerca la sezione con' case 'start': 'e aggiungi la riga' args.push ('-Djava.security.egd = file: ///dev/./urandom') 'sopra la riga' var seleniumProcess = spawnCommand ('java', args); ' – martin770

2

Per coloro che utilizzano gola-goniometro. È possibile passare java.security.egd nella proprietà seleniumArgs.

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

Per far funzionare il chrome sulla finestra mobile, ho dovuto eseguire in modalità privilegiata. Nella finestra mobile comporre:

privileged: true 
Problemi correlati