Ich habe gemeinsam genutztes Dreamhost-Hosting und versuche, Firefox 3.0 für die Verwendung mit Selen kopflos darauf auszuführen.
Wenn ich versuche, es auszuführen (~/local/bin/firefox/firefox
), wird folgende Fehlermeldung angezeigt:
error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory
Wie kann ich Firefox unter Linux ausführen, ohne dass diese gemeinsam genutzte Objektdatei erforderlich ist?
Antwort
Ich weiß, dass dies eine ziemlich alte Frage ist, aber ich wollte Um eine neuere Antwort hinzuzufügen, da ich hier von Google angewiesen wurde und eine Weile suchen musste, um die Antwort zu finden.
Ab Firefox 57 können Sie im Headless-Modus ausgeführt werden, indem Sie einfach Firefox installieren und Folgendes ausführen:
firefox -headless http://test.com/
Siehe die Firefox-Entwicklungsdokumente hier.
Kommentare
- Bitte beachten Sie, dass im ersten Headfox-Modus von Firefox GTK3 immer noch installiert ist. Soweit ich weiß, ist dieses Problem inzwischen gelöst.
Antwort
Sie können Firefox nicht ausführen ohne alle Gtk-Bibliotheken, die es benötigt, aber das lässt sich leicht durch die Installation der Bibliotheken lösen. Normalerweise würden Sie Firefox über ein Paketverwaltungssystem installieren und dadurch alle erforderlichen Bibliotheken abrufen.
Um Firefox normal auszuführen, benötigen Sie einen X-Server (das ist der Teil, der die Fenster und ihren Inhalt anzeigt, im Gegensatz zu Dingen wie Gtk, bei denen es sich um Bibliotheken handelt, mit denen die Anwendung den Inhalt erstellt). Dies ist etwas, das Sie normalerweise nicht auf einem Server ausführen würden. Es gibt einige Dinge, die Sie in Firefox ohne einen X-Server tun können. Ich weiß nicht, ob Selenium einer davon ist.
Um Firefox auf Ihrem Server auszuführen, führen Sie einen „virtuellen“ X-Server aus. Eine einfache ist Xvfb ( v irtual f rame b Puffer X Server). Es befindet sich in der X.org-Serververteilung . Beispiel für die Verwendung:
Xvfb :19 -screen 0 1024x768x16 & export DISPLAY=:19 firefox &
Kommentare
- Ausgezeichnet, Prost Gilles, das wars. Ich fand diese Artikel auch hilfreich, um Xvfb zum Laufen zu bringen: alittlemadness.com / 2008/03/05 / running-selenium-headless und blog.kabisa.nl/2010/05/24/…
Antwort
Sie können „nicht; Es ist mit den X- und Gtk + -Client-Bibliotheken verknüpft, und ich glaube nicht, dass es überhaupt möglich ist, es ohne sie zu erstellen.
Selbst in der Headless-Version von Firefox GTK + wird noch benötigt .
Antwort
Da Selen ein GUI-Testwerkzeug ist, würde ich Es fällt mir schwer zu glauben, dass es ohne X funktionieren kann.
Ich gehe also davon aus, dass für Ihren Headless-Server eine X-Installation erforderlich ist, wie sie von Gilles vorgeschlagen wurde. Es gibt eine Reihe ähnlicher Alternativen.
Antwort
Sie können
- einen Firefox verwenden In einem virtuellen Framebuffer:
xvfb-run -a firefox
- Verwenden Sie SlimerJS (eine eingebettete Gecko / Rendering-Engine von Firefox) mit xcfb,
- Verwenden Sie PhantomJS als eingebettetes WebKit, ohne dass eine Anzeige- und Selenunterstützung über GhostDriver – wenn WebKit für Sie in Ordnung ist.
Kommentare
- Ich denke, Sie meinen ' xvfb-run -a … ' und nicht xvfb, richtig?
- Danke 🙂 Vielleicht ist es das in der Zwischenzeit geändert?