Sélénium et Headless Environnement
-
30-09-2019 - |
Question
J'ai récemment installé Python 2.7, Robot Framework et la Bibliothèque Sélénium (je ne sais pas encore si je réussissais bien ...) sur un serveur Red Hat pour exécuter un certain test sur une application web.
Alors j'ai essayé un exemple simple de test à l'aide Robot Framework pour voir si Sélénium Library est fonctionnelle, juste pour ouvrir une page Web, rien de plus ...
Selenium Server est en cours d'exécution et en fonction du résultat de ps et binaires Firefox sont dans le PATH ...
L'exécution du cas de test du cadre Robot (avec le testcasename.tsv de pybot) Je reçois une exception:
ERREUR: Problème capture d'une capture d'écran à la chaîne: java.awt.AWTException: environnement sans tête
Alors, quel est le environnement sans tête ? Est-ce que quelqu'un a une idée s'il y a autre chose qui doit être installé ou à configurer ainsi?
La solution
Utilisation du X Virtual Frame Buffer (Xvfb):
Nous pouvons utiliser xvfb pour créer un environnement sans tête pour le sélénium (par exemple, pour exécuter sur SSH).
Instructions:
-
Démarrer
xvfb
avec les options suivantes:$ Xvfb :89 -ac -noreset
(où
:89
est le "display" virtuel créé). -
Ensuite, définissez la variable
DISPLAY
être cet affichage virtuel:$ export DISPLAY=:89
-
À ce stade, nous pouvons exécuter le serveur de sélénium comme vous le souhaitez. suivre les exemples.
Exécuter le serveur Java archive:
$ java -jar selenium-server.jar
En Python:
from selenium import webdriver
driver = webdriver.Firefox()
...
Autres conseils
Voici une simple bibliothèque de robot juste pour cette fin.