2014-09-08 8 views
5

Sto provando a eseguire i test e2e di Protractor all'interno di una VM Vagrant utilizzando Chrome senza testa. sono riuscito a farlo funzionare utilizzando Xvfb ma quando ho eseguito un test per compilare un modulo ho un errore: errore sconosciuto: è richiesto un display X per le conversioni keycode, considerare l'utilizzo di XvfbI tasti di invio del goniometro non funzionano: è richiesto un display x per le conversioni del codice tasto

Tutti i test funzionano bene ma non appena uso getKeys() (ad esempio element (by.model ('user.email')). sendKeys ('admin');) Ottengo questo errore, anche se sto già usando Xvfb.

sto correndo:

  • AngularJS app campione generato con il Yeoman angolare fullstack generatore
  • Nodejs versione 0.10.30, installato con NVM
  • Vagrant 1.6.3
  • VirtualBox 4.3 .14 ​​
  • Host OS Ubuntu 14.04 a 32 bit
  • sistema operativo ospite Ubuntu 14.04 a 32 bit
  • Chrome 37.0.2062.94
  • chromedriver 2.10.267517

Io uso il seguente script di shell per avviare Selenio e Xvfb:

#!/bin/sh

webdriver-manager start &

Xvfb :1 -ac -screen 0 1280x1024x8 &

export DISPLAY=:1

Ho anche aggiunto "export DISPLAY =: 1" a/opt/google/chrome/google-chrome. Ancora una volta, i test senza sendKeys() funzionano correttamente.

Quello che ho fatto finora:

  • Io corro 32 bit di Ubuntu così ho scaricato chromedriver 2.10 32 bit, ma che non ha aiutato
  • ho corse chromedriver con --verbose e controllato i registri, ma che mostra solo lo stesso errore
  • i giocherellava con le impostazioni di dimensione dello schermo XVFB, non aiutano
  • ho controllato un po 'di codice sorgente qui: https://github.com/bayandin/chromedriver/blob/master/keycode_text_conversion_x.cc e hanno trovato il messaggio di errore sulla linea 196. 0.123.Viene attivato quando il comando gfx :: GetXDisplay() (riga 193) non ottiene un oggetto di visualizzazione. Sospetto che potrebbe essere solo la variabile DISPLAY che esporto in/opt/google/chrome/google-chrome ma non sono sicuro e non ho idea di come risolverlo.

Mi piacerebbe sapere come posso ottenere sendfkeys() che funziona con Chrome senza testa all'interno di una VM Vagrant. Qualsiasi aiuto è molto apprezzato.

risposta

3

Verificare che seleniumAddress: 'http://localhost:4444/wd/hub' corrisponda al server di selenio ed evitare l'impostazione di chromeOnly poiché ciò eviterà efficacemente l'utilizzo del server di selenio senza testa.

Inoltre, Xvfb deve essere eseguito prima di webdriver-manager e vi state perdendo xvfb-run dato ti sembra di averne bisogno per fare il X authority dance per voi:

#!/bin/sh 

export DISPLAY=:1 

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

xvfb-run webdriver-manager start & 

Nel caso siate interessati Ho installato un senza testa soluzione basata su docker con accesso VNC opzionale e registrazione video: https://github.com/elgalu/docker-selenium

+0

Grazie per la rapida risposta, Leo. L'ho provato ma non funziona ancora. Ho anche eseguito sul mio Mac al lavoro che è a 64 bit, ma si verifica lo stesso errore. –

+0

Vuoi dire che esegui un sistema operativo per guest VM Ubuntu 14.04 a 64 bit? E l'uso di 'xvfb-run' dà lo stesso errore di prima per sendKeys? –

+0

A casa eseguo Ubuntu 14.04 a 32 bit come sistema operativo host e guest, su host OSX di lavoro e guest Ubuntu 14.04 a 64 bit. Entrambi danno lo stesso identico errore. Potrebbe essere una dipendenza che devo installare? Ho controllato diversi blog e SO che mi danno le stesse informazioni per far funzionare tutto. Se hai bisogno di maggiori informazioni per favore fammi sapere e grazie ancora per il tuo impegno! –

Problemi correlati