Comment puis-je exécuter Firefox sur Linux sans tête (c'est-à-dire sans nécessiter libgtk-x11-2.0.so.0)?

17

J'ai un hébergement partagé Dreamhost, et j'essaie d'exécuter Firefox 3.0 sans tête pour l'utiliser avec Selenium.

Lorsque j'essaye de l'exécuter ( ~/local/bin/firefox/firefox), j'obtiens le message d'erreur suivant:

error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory

Comment puis-je exécuter Firefox sur Linux sans avoir besoin de ce fichier objet partagé?

Paul D. Waite
la source

Réponses:

8

Je sais que c'est une question assez ancienne, mais je voulais ajouter une réponse plus récente, car j'ai été dirigé ici par Google et j'ai dû chercher un moment pour trouver la réponse.

Depuis Firefox 57, vous pouvez exécuter en mode sans tête simplement en installant Firefox et en exécutant:

firefox -headless http://test.com/

Voir les documents de développement de Firefox ici.

AlaskaJoslin
la source
Excellent - merci d'avoir ajouté une réponse à jour et de haute qualité; c'est exactement pour cela que Stack Exchange est conçu.
Paul D. Waite
14

Vous ne pouvez pas exécuter Firefox sans toutes les bibliothèques Gtk dont il a besoin, mais cela est facilement résolu en installant les bibliothèques. Normalement, vous installez Firefox via un système de gestion de packages et cela entraîne toutes les bibliothèques requises.

Pour exécuter Firefox normalement, vous avez besoin d'un serveur X (c'est la partie qui affiche les fenêtres et leur contenu, par opposition à des choses comme Gtk qui sont des bibliothèques que l'application utilise pour créer le contenu). C'est quelque chose que vous n'exécuteriez pas habituellement sur un serveur. Il y a très peu de choses que vous pouvez faire dans Firefox sans serveur X, je ne sais pas si Selenium en fait partie.

Pour exécuter Firefox sur votre serveur, exécutez un serveur X «virtuel». Un simple est Xvfb ( v irtual f rame b uffer X server). C'est dans la distribution du serveur X.org . Exemple d'utilisation:

Xvfb :19 -screen 0 1024x768x16 &
export DISPLAY=:19
firefox &
Gilles 'SO- arrête d'être méchant'
la source
1
Excellent, bravo Gilles, c'est fait. J'ai également trouvé ces articles utiles pour lancer Xvfb: alittlemadness.com/2008/03/05/running-selenium-headless et blog.kabisa.nl/2010/05/24/…
Paul D. Waite
7

Tu ne peux pas; il est lié aux bibliothèques client X et Gtk +, et je ne pense pas qu'il soit même possible de le construire sans elles.

Même dans la version sans tête de Firefox, GTK + est toujours nécessaire .

geekosaure
la source
2

Puisque Selenium est un outil de test GUI, je trouverais difficile de croire qu'il peut fonctionner sans X.

Donc, ma meilleure supposition est que votre serveur sans tête nécessite une installation X telle que celle suggérée par Gilles. Il existe un certain nombre d'alternatives similaires.

asoundmove
la source
2

Vous pouvez

  • utiliser Firefox dans un framebuffer virtuel: xvfb-run -a firefox
  • utiliser SlimerJS (un moteur de rendu / Gecko intégré de Firefox) avec xcfb,
  • utilisez PhantomJS comme WebKit intégré sans avoir besoin d'un support d'affichage et de sélénium via GhostDriver - si WebKit vous convient.
flob
la source
Je pense que vous voulez dire 'xvfb-run -a ...' et non xvfb, non?
Kutzi
Merci :-) Peut-être que cela a changé entre-temps?
flob