Est-il possible d'utiliser le pilote web selenium (Firefox) sans interface graphique?
nous envisageons de mettre à niveau notre serveur de production de Ubuntu - desktop 10.04 à Ubuntu - server 12.04.
nous avons divers services fonctionnant sur nos OS de bureau actuels tels que Pilote Web de sélénium. Ma question Est: le pilote web Selenium peut-il être lancé à partir d'un système cli?
ma pensée immédiate est qu'il ne peut pas, parce qu'il dépend de Firefox, mais je voudrais que quelqu'un pour prouver que j'ai tort!
9 réponses
ce que vous cherchez est un navigateur sans tête .
Oui, il est possible de faire fonctionner le sélénium sur Firefox sans tête. Voici un post , vous pouvez suivre.
voici le résumé des étapes pour mettre en place Xvfb
#install Xvfb
sudo apt-get install xvfb
#set display number to :99
Xvfb :99 -ac &
export DISPLAY=:99
#you are now having an X display by Xvfb
j'ai facilement réussi à cacher la fenêtre du navigateur.
Juste installer PhantomJS . Ensuite, changez cette ligne:
driver = webdriver.Firefox()
à:
driver = webdriver.PhantomJS()
le reste de votre code n'aura pas besoin d'être modifié et aucun navigateur ne s'ouvrira. Pour le débogage, utilisez driver.save_screenshot('screen.png')
à différentes étapes de votre code ou utilisez simplement le webdriver Firefox en développement.
si vous voulez le support d'un navigateur sans tête, alors il y a une autre approche que vous pourriez adopter.
https://github.com/detro/ghostdriver
il a été annoncé lors de la Conférence du sélénium et il est encore en développement. Il utilise PhantomJS comme navigateur et est bien meilleur que HTMLUnitDriver, il n'y a pas encore de screenshots, mais comme il est encore en développement actif.
une option est d'utiliser pyvirtualdisplay
comme ceci:
from pyvirtualdisplay import Display
display = Display(visible=0, size=[800, 600])
display.start()
#do selenium job here
display.close()
une version plus courte est:
with Display() as display:
# selenium job here
c'est généralement un python encapsulé de xvfb
, et plus convaincant en quelque sorte.
par ailleurs, bien que PhantomJS
soit un navigateur sans tête et aucune fenêtre ne sera ouverte si vous l'utilisez, il semble que PhantomJS
encore a besoin un environnement gui pour travailler.
j'ai eu le code D'erreur -6 quand j'ai utilisé PhantomJS()
au lieu de Firefox()
en mode sans tête (Putty-connected console). Cependant, tout est ok dans l'environnement de bureau.
mise à jour: vous n'avez plus besoin de XVFB pour exécuter headless Firefox. Firefox v55+ sous Linux et Firefox v56+ sous Windows/Mac prend désormais en charge l'exécution sans tête.
j'ai ajouté de la documentation pratique ici:
https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java
une autre option est GhostDriver qui est maintenant officiellement pris en charge par WebDriver: Ghostdriver actual performance gain
soyez conscient que htmlunitdriver webclient est monofiltre et Ghostdriver est seulement à 40% des fonctionnalités pour être un WebDriver.
néanmoins, Ghostdriver fonctionne correctement pour les tests et j'ai des problèmes pour le connecter au hub WebDriver.
Oui, vous pouvez exécuter des scripts de test sans navigateur, mais vous devez les exécuter en mode sans tête.