Comment puis-je exécuter Firefox sur CentOS sans affichage? [fermé]

16

J'essaie d'exécuter le navigateur Firefox GUI sur le serveur CentOS sans tête afin d'effectuer des tests Web.

Je n'ai pas besoin de voir la sortie graphique, car j'utilise l' API serveur Selenium pour contrôler l'entrée du navigateur et inspecter la sortie.

La configuration a été testée avec succès sur un ordinateur Mac de bureau. Cependant, il ne parvient pas à s'exécuter sur mon serveur VPS CentOS sans tête avec le message suivant "Erreur: aucun affichage spécifié." (Ce qui est logique, car ce n'est qu'un serveur assis sur un rack quelque part.)

Comment faire fonctionner Firefox sans écran, afin que Selenium puisse interagir avec lui? Ou - plus largement - comment les gens exécutent-ils des applications GUI uniquement sur un serveur Linux lorsqu'il n'y a pas d'affichage?

J'ai remarqué que Firefox a cette option de ligne de commande:

X11 options
  --display=DISPLAY  X display to use

Malheureusement, je ne sais rien de X11 ou d'affichages sous CentOS, donc je ne sais pas quoi spécifier sur la ligne de commande, ou si cela pourrait aider.

Eric
la source
4
Je trouve très étrange qu'une question qui a été mise en vedette 13 fois soit classée comme "trop ​​localisée".
harshath.jr
1
Exactement, j'ai un problème similaire et la question et la réponse m'ont été bénéfiques. Il devrait définitivement être rouvert au cas où quelqu'un trouverait une autre solution.
Marek Rost

Réponses:

18

Utilisez Xvfb. Il vous donne un serveur X qui ne nécessite pas de connexion à un écran physique.

(Donc, sur CentOS, vous feriez quelque chose comme "yum install xorg-x11-server-Xvfb".)

Vous pouvez ensuite le démarrer sur l'affichage ": 1" avec la commande "/ path / on / which / installed / Xvfb: 1 -screen 0 1024x768x24 &". Cela créera un écran avec une résolution de 1027x768 et une profondeur de 24. L'utilisation de "&" fera exécuter la commande en arrière-plan.

Avant de lancer Firefox, vous devez rendre l'affichage accessible, ce qui se fait à l'aide de la commande Exporter, c'est-à-dire. "export DISPLAY =: 1", pointant vers l'hôte approprié.

cjc
la source
Hou la la! Merci! Cela fonctionne, même si j'obtiens des tonnes de messages d'erreur étranges sur l'écran. Je vais poster une nouvelle question à ce sujet. En fin de compte, malgré les messages, cela fonctionne et renvoie les données dont j'ai besoin. Merci beaucoup, c'est juste l'aide dont j'avais besoin.
Eric
Soit dit en passant - comment puis-je «arrêter» l'affichage Xvfb quand j'ai fini avec tout?
Eric
Vous devriez pouvoir simplement tuer le processus. Si vous voulez devenir plus sophistiqué, vous pouvez envisager de configurer des scripts de démarrage / arrêt (si le package ne le fournit pas déjà; il peut: rechercher dans /etc/init.d tout script xvfb).
cjc
1
Je l'ai Merci. J'ai posté une question de suivi concernant les informations / messages d'erreur que je vois, au cas où vous recherchez plus de points de réputation :-) serverfault.com/questions/363914/…
Eric
Cette réponse est correcte mais vous DEVEZ garder à l'esprit que la exportcommande DOIT être définie sur la même session de terminal que le terminal sur
lequel