227 votes

Selenium WebDriver peut-il ouvrir des fenêtres de navigateur en silence en arrière-plan ?

J'ai une suite de tests Selenium qui exécute de nombreux tests et à chaque nouveau test, une fenêtre de navigateur s'ouvre au-dessus de toutes les autres fenêtres que j'ai ouvertes. C'est très gênant lorsque l'on travaille dans un environnement local. Existe-t-il un moyen d'indiquer à Selenium ou au système d'exploitation (Mac) d'ouvrir les fenêtres en arrière-plan ?

3voto

Majid A Points 504

Si vous utilisez le pilote Google Chrome, vous pouvez utiliser ce code très simple (il a fonctionné pour moi) :

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome('chromedriver2_win32/chromedriver.exe', options=chrome_options)
driver.get('https://www.anywebsite.com')

1voto

user2645074 Points 107

Sous *nix, vous pouvez également exécuter un serveur X Window sans tête, comme Xvfb, et faire pointer la commande DISPLAY à cette variable d'environnement :

Faux serveur X pour les tests ?

1voto

Navpreet Singh Points 31

Une façon d'y parvenir est d'exécuter le navigateur en mode sans tête. Un autre avantage de cette méthode est que les tests sont exécutés plus rapidement.

Veuillez trouver le code ci-dessous pour définir le mode sans tête dans le navigateur Chrome.

package chrome;

public class HeadlessTesting {

    public static void main(String[] args) throws IOException {
        System.setProperty("webdriver.chrome.driver",
                "ChromeDriverPath");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("headless");
        options.addArguments("window-size=1200x600");
        WebDriver driver = new ChromeDriver(options);
        driver.get("https://contentstack.built.io");
        driver.get("https://www.google.co.in/");
        System.out.println("title is: " + driver.getTitle());
        File scrFile = ((TakesScreenshot) driver)
                .getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(scrFile, new File("pathTOSaveFile"));
        driver.quit();
    }
}

0voto

Jack Fairfield Points 696

Voici une solution .NET qui a fonctionné pour moi :

Téléchargez PhantomJS à l'adresse http://phantomjs.org/download.html .

Copiez le fichier .exe du dossier bin du dossier de téléchargement et collez-le dans le dossier bin debug/release de votre projet Visual Studio.

Ajoutez ceci en utilisant

using OpenQA.Selenium.PhantomJS;

Dans votre code, ouvrez le pilote comme ceci :

PhantomJSDriver driver = new PhantomJSDriver();
using (driver)
{
   driver.Navigate().GoToUrl("http://testing-ground.scraping.pro/login");
   // Your code here
}

0voto

Bob Points 11

Si vous utilisez Ubuntu (Gnome), une solution de contournement simple consiste à installer l'extension Gnome auto-move-window : https://extensions.gnome.org/extension/16/auto-move-Windows/

Ensuite, placez le navigateur (par exemple, Chrome) dans un autre espace de travail (par exemple, l'espace de travail 2). Le navigateur fonctionnera silencieusement dans l'autre espace de travail et ne vous dérangera plus. Vous pouvez toujours utiliser Chrome dans votre espace de travail sans aucune interruption.

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