51 votes

Comment cacher la fenêtre de Firefox (Selenium WebDriver) ?

Lorsque j'exécute plusieurs tests simultanément, je ne veux pas garder la fenêtre du navigateur Firefox visible Je peux la réduire en utilisant selenium.minimizeWindow() mais je ne veux pas le faire.

Existe-t-il un moyen de masquer la fenêtre de Firefox ? J'utilise FireFox WebDriver.

73voto

Stéphane Bruckert Points 6124

Python

La manière la plus simple de masquer le navigateur est de installer PhantomJS . Ensuite, modifiez 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. À des fins de débogage, utilisez driver.save_screenshot('screen.png') à différentes étapes de votre code ou simplement passer à nouveau à Firefox webdriver.

Sous Windows, vous devrez spécifier le chemin d'accès à phantomjs.exe :

driver = webdriver.PhantomJS('C:\phantomjs-1.9.7-windows\phantomjs.exe')

Java

Jetez un coup d'œil à Ghost Driver : Comment exécuter ghostdriver avec Selenium en utilisant java ?


C#

Comment cacher FirefoxDriver (en utilisant Selenium) sans erreur de la fonction findElement dans PhantomDriver (navigateur sans tête) ?

22voto

Harriet.O Points 341

Il suffit d'ajouter le code suivant.

import os
os.environ['MOZ_HEADLESS'] = '1'
driver = webdriver.Firefox()

2 votes

Comme le souligne une autre réponse, il s'agit d'une nouvelle fonctionnalité depuis firefox 56

16voto

J'ai enfin trouvé la solution pour ceux qui utilisent une machine Windows pour exécuter les tests en utilisant n'importe quelle méthode. L'implémentation n'est pas en Java, mais vous pouvez le faire très facilement.

Utilisation AutoIt l'outil. Il dispose de toutes les capacités nécessaires pour gérer Windows. Il s'agit d'un outil gratuit.

  1. Installer AutoIt : http://www.autoitscript.com/site/autoit/downloads/

  2. Ouvrez l'éditeur et écrivez le code ci-dessous pour masquer n'importe quelle fenêtre.

    AutoItSetOption("WinTitleMatchMode", 2)
    WinSetState("Title Of Your Window", "", @SW_HIDE) 
  3. Pour l'effacer, vous pouvez utiliser la ligne de code ci-dessous.

    AutoItSetOption("WinTitleMatchMode", 2)
    WinSetState("Title Of Your Window", "", @SW_SHOW)

    WinTitleMatchMode dispose de différentes options qui peuvent être utilisées pour faire correspondre le titre de Windows.

    1 = Match the title from the start (default)`
    2 = Match any substring in the title
    3 = Exact title match
    4 = Advanced mode, see Window Titles & Text (Advanced)

Ce que j'ai fait, c'est que J'ai créé un fichier .exe d'un petit programme et j'ai passé un paramètre comme argument de ligne de commande comme ci-dessous.

Runtime.getRuntime().exec("C:/Diiinnovation/HideNSeek.exe 0 \"" + "Mozilla Firefox" + "\"");

en HideNSeek.exe - J'ai le code AutoIt ci-dessous :

AutoItSetOption("WinTitleMatchMode", 1) 

if $CmdLine[0] > 0 Then
    if $CmdLine[1] == 0 Then
        WinSetState($CmdLine[2], "", @SW_HIDE)    
    ElseIf $CmdLine[1] == 1 Then
        WinSetState($CmdLine[2], "", @SW_SHOW)          
    Else    
    EndIf   
EndIf

$CmdLine[] est un tableau, qui contiendra tous les paramètres de la ligne de commande...

$CmdLine[0] = number of Parameter
$CmdLine[1] = 1st Parameter after Exe Name 
...

S'il y a un espace dans le titre de la fenêtre, vous devez utiliser des guillemets doubles pour le passer en tant que paramètre de la ligne de commande comme ci-dessus.

La ligne de code ci-dessous exécutera l'exe AutoIt et si je passe le code '0' dans le 1er paramètre, il cachera la fenêtre et si je passe le paramètre '1' et il masquera les fenêtres correspondant au titre.

Runtime.getRuntime().exec("C:/Diiinnovation/HideNSeek.exe 0 \"" + "Mozilla Firefox" + "\"");

J'espère que cela vous aidera. Je vous remercie.

12voto

J'ai utilisé xvfb pour résoudre le problème comme suit.

Tout d'abord, installez Xvfb :

# apt-get install xvfb

sur Debian/Ubuntu ; ou

# yum install xorg-x11-Xvfb

sur Fedora/RedHat. Ensuite, choisissez un numéro d'affichage qui n'est pas susceptible d'entrer en conflit (même si vous ajoutez un affichage réel plus tard) - quelque chose d'élevé comme 99 devrait faire l'affaire. Exécutez Xvfb sur cet écran, avec le contrôle d'accès désactivé :

# Xvfb :99 -ac

Vous devez maintenant vous assurer que votre affichage est réglé sur 99 avant de lancer le serveur Selenium (qui lui-même lance le navigateur). La manière la plus simple de le faire est d'exporter DISPLAY=:99 dans l'environnement de Selenium. Tout d'abord, assurez-vous que les choses fonctionnent depuis la ligne de commande comme suit :

$ export DISPLAY=:99
$ firefox

ou simplement

$ DISPLAY=:99 firefox

Vous trouverez ci-dessous un lien qui m'a aidé
http://www.alittlemadness.com/2008/03/05/running-selenium-headless/

12voto

Johny Points 659

Il suffit de faire (Python) :

opts = webdriver.FirefoxOptions()
opts.headless = True
firefox = webdriver.Firefox(options=opts)

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