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.

2voto

Vlad Points 94

Java

J'ai eu un problème similaire avec ChromeDriver (j'avais besoin de minimiser la fenêtre du navigateur pendant l'exécution des tests). Je n'ai pas trouvé de meilleur moyen de le faire, et j'ai fini par utiliser la combinaison de clavier Alt+Espace, N pour le faire. Cela ne devrait fonctionner que sous Windows, l'exemple utilise la classe Java AWT Robot pour jouer les raccourcis clavier :

//Alt + Space to open the window menu
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_SPACE);
robot.keyRelease(KeyEvent.VK_SPACE);
robot.keyRelease(KeyEvent.VK_ALT);
Thread.sleep(200);

// miNimize
robot.keyPress(KeyEvent.VK_N);
robot.keyRelease(KeyEvent.VK_N);

2voto

Adam Wildavsky Points 271

J'ai trouvé que le moyen le plus simple était d'utiliser PhantomJS, selon la suggestion de Stéphane. J'ai téléchargé le binaire et mis phantomjs dans mon PATH, dans mon cas (Mac OS) dans /usr/bin/. J'aime garder la possibilité de voir ce qui se passe, alors je l'ai enveloppé comme ceci (en Python) :

def new_driver():
    if 'VISIBLE_WEBDRIVER' in os.environ:
        return webdriver.Firefox()
    else:
        return webdriver.PhantomJS()

Références :
http://blog.likewise.org/2013/04/webdriver-testing-with-python-and-ghostdriver/
http://www.realpython.com/blog/python/headless-selenium-testing-with-python-and-phantomjs/

1voto

fuzzyanalysis Points 858

En Java, vous pouvez utiliser HtmlUnitDriver pour lancer une session de navigateur sans tête qui n'ouvrira pas réellement le navigateur.

Ajoutez la dépendance suivante à votre pom.xml (ou téléchargez et référencez ce qui suit) :

<dependency>
    <groupId>net.sourceforge.htmlunit</groupId>
    <artifactId>htmlunit</artifactId>
    <version>2.15</version>
</dependency>

... et le tester comme vous le feriez pour une instance de pilote WebDriver :

 driver = new HtmlUnitDriver();
 driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
 driver.get("http://www.google.com");
 // etc..
 driver.quit();

Une autre question similaire dans le SO : Éviter d'ouvrir le navigateur sur le serveur distant pendant l'appel à selenium

1voto

rinjan Points 11

Dans les options (options Firefox, options chrome)

fixer la valeur du booléen headless à true en appelant la méthode set_headless.

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