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!

90
demandé sur josliber 2012-05-01 18:59:06

9 réponses

ce que vous cherchez est un .

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
84
répondu grahaminn 2017-05-31 09:19:33

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.

18
répondu Stéphane Bruckert 2016-10-18 22:06:23

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.

10
répondu haroonzone 2012-05-02 23:02:39

Oui. Vous pouvez utiliser HTMLUnitDriver à la place de FirefoxDriver en démarrant webdriver. C'est navigateur sans installation. Les détails peuvent être trouvés ici .

7
répondu A.J 2014-08-23 06:43:49

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.

4
répondu 郑文勋 2017-06-29 03:36:28

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

3
répondu Nicholas DiPiazza 2018-06-23 04:27:02

une autre option est GhostDriver qui est maintenant officiellement pris en charge par WebDriver: Ghostdriver actual performance gain

2
répondu Alister Scott 2017-05-23 12:03:02

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.

1
répondu guillemhs 2012-08-07 09:43:22

Oui, vous pouvez exécuter des scripts de test sans navigateur, mais vous devez les exécuter en mode sans tête.

0
répondu VinsW 2018-09-11 08:37:39