web-dev-qa-db-fra.com

Comment désactiver la journalisation Firefox dans Selenium avec Geckodriver?

J'utilise:

  • firefox version 50.1.0
  • geckodriver version 0.11.1
  • Selenium-Java 3.0.1

J'ai essayé

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("webdriver.log.browser.ignore", true);
profile.setPreference("webdriver.log.driver.ignore", true);
profile.setPreference("webdriver.log.profiler.ignore", true);
FirefoxDriver driver = new FirefoxDriver();

et

LoggingPreferences preferences = new LoggingPreferences();
preferences.enable(LogType.BROWSER, Level.OFF);
preferences.enable(LogType.CLIENT, Level.OFF);
preferences.enable(LogType.DRIVER, Level.OFF);
preferences.enable(LogType.PERFORMANCE, Level.OFF);
preferences.enable(LogType.SERVER, Level.OFF);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(CapabilityType.LOGGING_PREFS, preferences);
FirefoxDriver driver = new FirefoxDriver(capabilities);

aucune de ces méthodes ne fait rien pour arrêter la journalisation . Voici la sortie de la console si cela peut aider:

Pour ceux qui se demandent, j’ai log4j 1.2.17 dans mon pom.xml mais n’ai ni log4j.properties ni log4j.xml et je ne l’utilise pas du tout.


Pour clarifier: quand je parle de journalisation, je parle de la sortie de la console dans IntelliJ IDEA. J'utilise Java.

10
PizzaFrog

Pour ne pas voir les journaux dans la console, vous pouvez utiliser les éléments suivants:

System.setProperty("webdriver.gecko.driver","src/main/resources/drivers/geckodriver.exe");
System.setProperty(FirefoxDriver.SystemProperty.DRIVER_USE_MARIONETTE,"true");
System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE,"/dev/null");

return new FirefoxDriver();
10
Michael Medina

Vous pouvez définir le niveau de journalisation souhaité via la ligne de commande dans geckodriver.exe. 

geckodriver.exe -help    
USAGE:
    geckodriver.exe [FLAGS] [OPTIONS]   
...
OPTIONS:
        --log <LEVEL>
            Set Gecko log level [values: fatal, error, warn, info, config,
            debug, trace]

Si vous utilisez geckodriver de Selenium, vous avez deux options:

  • Démarrez geckodriver.exe séparément avec des arguments personnalisés et utilisez-le à partir de Selenium via RemoteWebDriver.
  • Créez un wrapper personnalisé, pour ajouter des paramètres supplémentaires à geckodriver.exe

Exemple de fichier chauve-souris geckodriver wrapper (pour Windows):

@ECHO OFF
ECHO Starting geckodriver: %0 %*
.\GeckoDriver\geckodriver.exe --log fatal %* > NUL 2>&1

En Java, vous pouvez définir le chemin de l'exécutable geckodriver via la propriété webdriver.gecko.driver system:

System.setProperty("webdriver.gecko.driver", "c:/Selenium/geckodriver/gdrvwrapper.bat");
6
voji

Fais juste ça

System.setProperty(FirefoxDriver.SystemProperty.DRIVER_USE_MARIONETTE,"true");
System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE,"/dev/null");
driver = new FirefoxDriver();
3
Akash

Pour Selenium 3.14.0, cela fonctionne 

System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE,"/dev/null");
0
Shantonu

Ceci est la version linux pour la réponse @voji ci-dessus. Notez comme je l'ai dit ci-dessus dans le commentaire. Je ne crois pas que --log fatal ne fasse rien, du moins pas sur linux. Cependant, la redirection vers NULL fonctionne assez bien pour moi 

"webdriver.gecko.driver": "/path-to-driver/geckodriver.sh

nom de fichier: geckodriver.sh (exécutable)

#! /bin/bash
echo " ARGS: " $@
geckodriver --log fatal "$@" > /dev/null 2>&1
0
mancocapac