127 votes

Est-il possible d'exécuter le pilote web de Selenium (Firefox) sans interface graphique ?

Nous envisageons de mettre à niveau notre serveur de production à partir d'Ubuntu- bureau 10.04 à Ubuntu- serveur 12.04.

Nous avons divers services fonctionnant sur notre système d'exploitation de bureau actuel, tels que Selenium Web Driver. Ma question est la suivante : le Selenium Web Driver peut-il être exécuté à partir d'un système client ?

Je pense immédiatement qu'il ne peut pas le faire, car il repose sur Firefox, mais j'aimerais que quelqu'un me prouve le contraire !

0 votes

116voto

grahaminn Points 553

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 une poste que vous pouvez suivre.

Voici les étapes résumées 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

5 votes

Cela fonctionne et prend en charge les captures d'écran. Je l'utilise. Il fonctionne aussi avec google chrome.

0 votes

Je ne pense pas que cela fonctionne désormais (du moins pas facilement, car cela nécessite un nouveau geckodriver, tout comme Chrome).

1 votes

@ArchimedesTrajano Ça marche toujours. Les instructions permettent de créer un écran virtuel en utilisant Xvfb pas pour l'installation et la configuration de Selenium (qui nécessite d'avoir geckodriver sur le chemin).

40voto

Stéphane Bruckert Points 6124

Chrome dispose désormais d'un mode sans tête :

op = webdriver.ChromeOptions()
op.add_argument('--headless')
driver = webdriver.Chrome(options=op)

4 votes

PhantomJS n'est actuellement pas en développement actif. Le dépôt Git est archivé.

1 votes

Selenium a également cessé de supporter PhantomJS avec le message suivant "UserWarning : Le support Selenium de PhantomJS a été déprécié, veuillez utiliser les versions headless de Chrome ou Firefox à la place".

0 votes

Python 3.8 : 'headless' n'a pas fonctionné, mais '--headless' a fait, cependant.

11voto

A.J Points 3363

Oui. Vous pouvez utiliser HTMLUnitDriver au lieu de FirefoxDriver lors du démarrage de webdriver. Il s'agit d'une configuration de navigateur sans tête. Les détails peuvent être trouvés aquí .

1 votes

Cela supporterait-il des fonctions telles que save_screenshot() ? coreygoldberg.blogspot.co.uk/2011/06/

0 votes

Je n'ai pas essayé, mais c'est peut-être possible car vous créez toujours une interface utilisateur, mais vous l'affichez dans une fenêtre "virtuelle".

2 votes

HTMLUnitDriver ne prend PAS en charge la capture d'écran car le contenu n'est pas rendu du tout (problème 1361). Une alternative à laquelle je pense est d'utiliser getHTMLSource et de montrer la page HTML plutôt qu'une capture d'écran.

10voto

haroonzone Points 166

Si vous voulez un support pour les navigateurs sans tête, il existe une autre approche que vous pouvez adopter.

https://github.com/detro/ghostdriver

Il a été annoncé lors de la conférence Selenium et il est toujours en cours de développement. Il utilise PhantomJS comme navigateur et est bien meilleur que HTMLUnitDriver, il n'y a pas encore de captures d'écran, mais comme il est toujours en développement actif.

1voto

guillemhs Points 107

Sachez que le webclient de HtmlUnitDriver est monofil et que Ghostdriver n'a 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.

0 votes

Cela apporte-t-il de nouvelles informations que les autres réponses n'apportent pas ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X