6

Ho Chrome che funziona senza headless tramite un server Selenium eseguendo xvfb associato a DISPLAY: 10 e quindi eseguendo Selenium con un DISPLAY=:10 webdriver-manager start. Quindi va tutto bene.Come posso eseguire Chrome headless dal goniometro SENZA usare un server Selenium

Ho anche Chromedriver in esecuzione direttamente dal goniometro specificando directConnect: true nel mio protractor.conf.

Quello che mi piacerebbe fare è una combinazione dei due, vale a dire. eseguire chromedriver direttamente (NESSUN SELENIO!), ma in qualche modo ordinarlo di eseguire headless su DISPLAY: 10.

In termini di topologia, tutto viene eseguito sul PC dello sviluppatore. Non ci sono server coinvolti. In un commento qui sotto, menziono un server nodo: questo viene usato per lanciare il goniometro invece del più consueto avvio dalla riga di comando. Voglio che il goniometro sia in esecuzione su DISPLAY: 0 così posso vedere il suo output, i test falliti ecc. Quando si genera chrome usando chromedriver, voglio che chrome sia in esecuzione su DISPLAY: 10. Il motivo per cui lo faccio è che voglio che la finestra di Chrome sia più grande del mio schermo fisico. Vedi How can I screenshot the full height of a mobile form factor? per lo sfondo.

+0

Ciao Andrew. Non funziona perché non so come provare a farlo funzionare.Non riesco a trovare da nessuna parte per configurare il DISPLAY di destinazione per l'istanza di Chrome lanciata. – pinoyyid

+0

java non entra in esso. goniometro è un'applicazione di nodo. DISPLAY per l'applicazione del nodo è DISPLAY =: 0 perché il goniometro è in esecuzione sul mio display X. È quando il goniometro genera il chromedriver che voglio che il chromedriver si connetta a DISPLAY =: 10 – pinoyyid

+0

Spiacente, commento confuso cancellato. Ovviamente bloccato in modalità Java ... –

risposta

2

Ho avuto un "Doh !!!" il momento dello zen e il tutto è molto più facile di quanto pensassi.

Ho confaturato lo stdout del nodo/goniometro (che voglio sul mio schermo) con la visualizzazione X di chrome (che voglio headless su DISPLAY: 10). Certo che sono totalmente diversi !!!!

Semplice prefixing goniometro con DISPLAY =: 10 es.

DISPLAY=:10 protractor /installation_test/conf-c-direct-noserver.js 

o, nel mio caso, in quanto sono in esecuzione un server nodo che a sua volta genera goniometro, ...

DISPLAY=:10 npm start 

Così goniometro viene eseguito in mio terminale e posso guardare stdout, mentre il, DISPLAY =: 10 viene ereditato attraverso i livelli di chiamata e alla fine viene visualizzato e compreso da Chrome.

2

sto cercando di indovinare la topologia è come questo:

  • Box A: xvfb, DISPLAY=:10, Selenio Server, chromedriver
  • Box B: DISPLAY=:0, nodo, goniometro (directConnect: true), chromedriver
  • Box C: test runner.

Non so come altro potrebbe essere disposto, dato che DISPLAYis an environment variable, non un parametro da passare.

In questo caso, supponendo che non si vuole un separato xvfb installato su Box B, e A è raggiungibile (oltre a una connessione decente) da B, la soluzione è semplicemente quello di impostare:

DISPLAY=boxAHost:10 

su Casella B.

Se A non è raggiungibile da B, potrebbe essere più semplice duplicare semplicemente l'impostazione xvfb su A e B e avere DISPLAY=:10 su entrambi.

+0

vedere i miei aggiornamenti alla domanda, c'è solo una singola casella. le variabili d'ambiente possono essere rese specifiche per un processo, ad es. 'DISPLAY =: 10 goniometro' – pinoyyid

+0

Qualche possibilità di condividere un collegamento con informazioni sulla possibilità di collegarsi a un processo (magari sulla tua risposta)? Non riuscivo a trovarlo documentato da nessuna parte. –

+0

scusa @Andrew, non capisco la tua domanda "link a un processo". Se riesci a chiarire, ti fornirò felicemente qualsiasi informazione che possiedo. Vuoi dire; invocare chromedriver direttamente, piuttosto che tramite un server Selenium? Se è così è documentato https://github.com/angular/protractor/blob/master/docs/referenceConf.js vedere la riga 91'directConnect: false, ' – pinoyyid

Problemi correlati