Nous envisageons de mettre à niveau notre serveur de production d'Ubuntu - desktop 10.04 vers Ubuntu - serveur 12.04.
Nous avons divers services fonctionnant sur notre système d'exploitation actuel, tel que Selenium Web Driver. Ma question est la suivante: le pilote Web Selenium peut-il être exécuté à partir d'un système CLI?
Ma pensée immédiate est que cela ne peut pas, car cela dépend de Firefox, mais j'aimerais que quelqu'un me prouve le contraire!
Ce que vous cherchez, c'est un navigateur sans tête .
Oui, il est possible d'exécuter Selenium sur Firefox sans tête. Voici un post vous pouvez suivre.
Voici les étapes récapitulatives pour configurer 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.
Il suffit de installer PhantomJS . Puis changez cette ligne:
driver = webdriver.Firefox()
à:
driver = webdriver.PhantomJS()
Le reste de votre code n'aura pas besoin d'être changé et aucun navigateur ne s'ouvrira. À des fins de débogage, utilisez driver.save_screenshot('screen.png')
à différentes étapes de votre code ou continuez simplement à utiliser le WebDriver Firefox en cours de développement.
Si vous souhaitez un support sans navigateur, vous pouvez adopter une autre approche.
https://github.com/detro/ghostdriver
Il a été annoncé lors de la conférence Selenium et il est encore en développement. Il utilise PhantomJS comme navigateur et est bien meilleur que HTMLUnitDriver. Il n’ya pas encore de capture d’écran, mais il est toujours en développement.
Oui. Vous pouvez utiliser HTMLUnitDriver
à la place de FirefoxDriver
tout en démarrant Webdriver. Ceci est la configuration du navigateur sans tête. Les détails peuvent être trouvés ici .
Une option consiste à 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 pratique en quelque sorte.
À propos, bien que PhantomJS
soit un navigateur sans interface graphique et qu'aucune fenêtre ne soit ouverte si vous l'utilisez, il semble que PhantomJS
still nécessite un environnement graphique pour fonctionner.
J'ai le code d'erreur -6 lorsque j'utilise PhantomJS()
au lieu de Firefox()
en mode sans tête (console connectée à PuTTY). Cependant, tout est ok dans l'environnement de bureau.
MISE À JOUR: Vous n'avez plus besoin de XVFB pour exécuter Firefox sans tête. Firefox v55 + sous Linux et Firefox v56 + sous Windows/Mac prennent désormais en charge l'exécution sans interface graphique.
J'ai ajouté de la documentation d'utilisation ici:
https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java
Une autre option est GhostDriver, qui est maintenant officiellement prise en charge par WebDriver: Ghostdriver gain de performances réelles
Sachez que le client Web HtmlUnitDriver est mono-thread et que Ghostdriver ne représente que 40% des fonctionnalités d’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.