Wie kann ich Firefox unter Linux kopflos ausführen (dh ohne libgtk-x11-2.0.so.0)?

17

Ich habe Dreamhost-Shared-Hosting und versuche, Firefox 3.0 kopflos für die Verwendung mit Selenium auszuführen.

Wenn ich versuche, es ( ~/local/bin/firefox/firefox) auszuführen , 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 diese gemeinsam genutzte Objektdatei zu benötigen?

Paul D. Waite
quelle

Antworten:

8

Ich weiß, dass dies eine ziemlich alte Frage ist, aber ich wollte eine neuere Antwort hinzufügen, da ich hier von Google verwiesen wurde und nach einer Weile suchen musste, um die Antwort zu finden.

Ab Firefox 57 können Sie im Headless-Modus ausgeführt werden, indem Sie Firefox installieren und Folgendes ausführen:

firefox -headless http://test.com/

Hier finden Sie die Firefox-Entwicklerdokumente.

AlaskaJoslin
quelle
Ausgezeichnet - danke, dass Sie eine aktuelle und qualitativ hochwertige Antwort hinzugefügt haben. Genau dafür wurde Stack Exchange entwickelt.
Paul D. Waite
14

Sie können Firefox nicht ohne alle erforderlichen Gtk-Bibliotheken ausführen, dies lässt sich jedoch leicht durch die Installation der Bibliotheken beheben. Normalerweise würden Sie Firefox über ein Paketverwaltungssystem installieren und dabei 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, die Bibliotheken sind, die die Anwendung zum Erstellen des Inhalts verwendet). Das ist etwas, was Sie normalerweise nicht auf einem Server ausführen würden. Es gibt sehr wenige Dinge, die Sie in Firefox ohne einen X-Server tun können. Ich weiß nicht, ob Selen einer von ihnen ist.

Um Firefox auf Ihrem Server auszuführen, führen Sie einen "virtuellen" X-Server aus. Ein einfacher ist Xvfb ( v irtual f Rame b Uffer X - Server). Es befindet sich in der X.org-Serververteilung . Beispielnutzung:

Xvfb :19 -screen 0 1024x768x16 &
export DISPLAY=:19
firefox &
Gilles 'SO - hör auf böse zu sein'
quelle
1
Exzellent, danke Gilles, das ist geschafft. 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/…
Paul D. Waite
7

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.

Auch in der Headless-Version von Firefox wird GTK + noch benötigt .

Geekosaurier
quelle
2

Da Selenium ein GUI-Testtool ist, fällt es mir schwer zu glauben, dass es ohne X funktionieren kann.

Ich vermute also, dass Ihr Headless-Server eine X-Installation wie die von Gilles vorgeschlagene erfordert. Es gibt eine Reihe ähnlicher Alternativen.

asoundmove
quelle
2

Du kannst

  • benutze einen Firefox 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 erforderlich ist - wenn WebKit für Sie in Ordnung ist.
flob
quelle
Ich denke du meinst 'xvfb-run -a ...' und nicht xvfb, oder?
Kutzi
Danke :-) Vielleicht hat sich das inzwischen geändert?
Flob