Ho lhosting condiviso di Dreamhost e sto cercando di eseguire Firefox 3.0 senza testa per utilizzarlo con Selenium.
Quando provo a eseguirlo (~/local/bin/firefox/firefox
), ricevo il seguente messaggio di errore:
error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory
Come posso eseguire Firefox su Linux senza richiedere questo file oggetto condiviso?
Risposta
So che questa è una domanda piuttosto vecchia, ma volevo per aggiungere una risposta più recente poiché sono stato indirizzato qui da Google e ho dovuto cercare un po per trovare la risposta.
A partire da Firefox 57, puoi eseguire in modalità headless semplicemente installando Firefox ed eseguendo:
firefox -headless http://test.com/
Consulta i documenti degli sviluppatori di Firefox qui.
Commenti
- Per favore, nota che nelle prime versioni, la modalità headless di Firefox richiedeva ancora linstallazione di GTK3. Questo problema è ormai risolto, per quanto ne so.
Risposta
Non puoi eseguire Firefox senza tutte le librerie Gtk che richiede, ma è facilmente risolvibile installando le librerie. Normalmente installeresti Firefox tramite un sistema di gestione dei pacchetti e questo attirerebbe tutte le librerie richieste.
Per eseguire Firefox normalmente, è necessario un server X (questa è la parte che mostra le finestre e il loro contenuto, al contrario di cose come Gtk, che sono librerie che lapplicazione usa per costruire il contenuto). Questo è qualcosa che normalmente non gireresti su un server. Ci sono poche cose che puoi fare in Firefox senza un server X, non so se Selenium sia una di queste.
Per eseguire Firefox sul tuo server, esegui un server X “virtuale”. Uno semplice è Xvfb ( v irtual f rame b uffer X server). Si trova nella distribuzione del server X.org . Utilizzo di esempio:
Xvfb :19 -screen 0 1024x768x16 & export DISPLAY=:19 firefox &
Commenti
- Eccellente, evviva Gilles, è stato fatto. Ho anche trovato utili questi articoli per far funzionare Xvfb: alittlemadness.com / 2008/03/05 / running-selenium-headless e blog.kabisa.nl/2010/05/24/…
Risposta
Non puoi “t; è collegato alle librerie client X e Gtk + e non credo sia nemmeno possibile crearlo senza di loro.
Anche nella versione headless di Firefox, GTK + è ancora necessario .
Risposta
Poiché Selenium è uno strumento di test della GUI, lo farei trovo difficile credere che possa funzionare senza X.
Quindi la mia ipotesi migliore è che il tuo server headless richieda uninstallazione X come quella suggerita da Gilles. Esistono numerose alternative simili.
Risposta
Puoi
- utilizzare Firefox in un framebuffer virtuale:
xvfb-run -a firefox
- usa SlimerJS (un motore di rendering / Gecko incorporato da Firefox) con xcfb,
- utilizza PhantomJS come WebKit incorporato senza la necessità di supporto per display e selenio tramite GhostDriver : se WebKit va bene per te.
Commenti
- Penso che tu intenda ' xvfb-run -a … ' e non xvfb, giusto?
- Grazie 🙂 Forse è così cambiato nel frattempo?