2014-07-09 1 views
6

Ho installato il selenio-server-standalone-2.42.2.jar in una debian box virtualeSelenio Errore: nessuna visualizzazione specificato

e installato Firefox 29.0

e cercando di eseguire il seguente script con PHPUnit che è l'unico file nella directory:

<?php 
class TestLogin extends PHPUnit_Extensions_Selenium2TestCase{ 

    public function setUp() 
    { 
      $this->setHost('localhost'); 
      $this->setPort(4444); 
      $this->setBrowser('firefox'); 
      $this->setBrowserUrl('http://debian-vm/phpUnitTutorial'); 
    } 

    public function testHasLoginForm() 
    { 
      $this->url('index.php'); 

      $username = $this->byName('username'); 
      $password = $this->byName('password'); 

      $this->assertEquals('', $username->value()); 
      $this->assertEquals('', $password->value()); 
    } 
} 

ottengo il seguente errore:

1) TestLogin::testHasLoginForm 
PHPUnit_Extensions_Selenium2TestCase_WebDriverException: Unable to connect to host 
127.0.0.1 on port 7055 after 45000 ms. Firefox console output: 
Error: no display specified 
Error: no display specified 

Cosa significa?

Sono rossi diversi thread e apparentemente ho dovuto fare i seguenti che ho provato:

1) a digitare questo nella shell dei comandi

export PATH=:0; 

Risultato: ho ottenuto lo stesso errore.

2) Ho installato vnc4server e ho ricevuto debian-vm: 1 come applicazione, quindi ho impostato export PATH=debian-vm:1 eseguendolo con realvnc e nel visualizzatore (che funziona) ho avuto lo stesso problema.

+0

è il server in esecuzione? Lo stesso errore qui: http://stackoverflow.com/questions/10011343/selenium-2-unable-to-connect-to-host – Decypher

+0

Firefox 29.0 questo: https://ftp.mozilla.org/pub/mozilla. org/firefox/releases/29.0/linux-x86_64/it-it/ –

+0

hai risolto il problema? sembra essere lo stesso problema che ho –

risposta

12

Si riceve questo errore, perché non è stata impostata la variabile DISPLAY. Ecco una guida su come eseguire il test su una macchina senza testa.

è necessario installare Xvfb e un browser prima:

apt-get install xvfb 
apt-get install firefox-mozilla-build 

quindi avviare Xvfb:

Xvfb & 

impostato DISPLAY e iniziare Selenio:

export DISPLAY=localhost:0.0 
java -jar selenium-server-standalone-2.44.0.jar 

e poi si sarà in grado di eseguire i test.

+3

Si consiglia di lasciare la gestione di xvfb e la variabile DISPLAY a uno script di supporto. Vedere questa risposta: http://stackoverflow.com/a/14155698/376138 – pixelistik

+0

Questo approccio sembra non funzionare più con Ubuntu 16.04: Ho sempre ricevuto l'errore 'Impossibile connettersi a Mir: Impossibile connettersi al socket del server: Nessun file di questo tipo o directory Impossibile avviare il server: Tipo di display Broadway non supportato: localhost: 0.0 Errore: impossibile aprire display: localhost: 0.0 ' – xuhdev

+0

non c'è bisogno di Xvfb, il xorg-xserver-video-dummy funziona bene anche con xorg di serie :) – hanshenrik

2

Certamente lo scripting è la strada da percorrere, tuttavia la ripetizione di tutti i possibili valori di DISPLAY non è buona come usare il giusto valore di DISPLAY. Inoltre non c'è bisogno di xvfb almeno in debian/ubuntu. Il selenio può essere eseguito localmente o in remoto utilizzando una variabile di sessione DISPLAY corrente purché sia ​​corretta. Vedere il mio post in http://thinkinginsoftware.blogspot.com/2015/02/setting-display-variable-to-avoid-no.html ma in breve:

# Check current DISPLAY value 
$ echo $DISPLAY 
:0 
# If xclock fails as below the variable is incorrect 
$ xclock 
No protocol specified 
No protocol specified 
Error: Can't open display: :0 
# Find the correct value for the current user session 
$ xauth list|grep `uname -n` 
uselenium/unix:10 MIT-MAGIC-COOKIE-1 48531d0fefcd0a9bde13c4b2f5790a72 
# Export with correct value 
$ export DISPLAY=:10 
# Now xclock runs 
$ xclock 
+0

" Inoltre non c'è bisogno di xvfb almeno in debian/ubuntu "Questo presuppone che ci sia effettivamente un display, che non è il caso su un server senza testa. Quindi Xvfb è molto spesso necessario. –

+0

@Corey Suppongo che tu * non * funzioni in modalità headless. Puoi certamente fare ma poi non sarai in grado di guardare in tempo reale i tuoi test che potrebbero andar bene in alcuni casi. Io uso i desktop che funzionano come server per testare l'interfaccia perché dopo tutto l'UI viene eseguito su desktop e non su server. –

+0

l'uso di desktop con display fisici va bene per piccoli ambienti di esecuzione, ma non è fattibile per l'automazione su larga scala o economica. –