web-dev-qa-db-de.com

Wie deaktiviere ich die Firefox-Protokollierung in Selenium mit Geckodriver?

Ich benutze:

  • firefox Version 50.1.0
  • geckodriver version 0.11.1
  • Selen-Java 3.0.1

Ich habe versucht

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();

und

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);

keine dieser Methoden stoppt die Protokollierung. Hier ist die Konsolenausgabe, wenn das irgendwie hilft:

Für diejenigen, die sich fragen, habe ich log4j 1.2.17 in meinem pom.xml, aber keinen log4j.properties oder log4j.xml und verwende es überhaupt nicht.


Um es klar zu sagen: Wenn ich Logging sage, meine ich die Konsole-Ausgabe in IntelliJ IDEA. Ich verwende Java.

10
PizzaFrog

Um die Protokolle in der Konsole nicht anzuzeigen, können Sie Folgendes verwenden:

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

Sie können die gewünschte Protokollierungsstufe über die Befehlszeile in geckodriver.exe definieren. 

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

Wenn Sie Geckodriver von Selenium verwenden, haben Sie zwei Möglichkeiten:

  • Starten Sie geckodriver.exe separat mit benutzerdefinierten Argumenten und verwenden Sie es von Selenium aus über RemoteWebDriver
  • Erstellen Sie einen benutzerdefinierten Wrapper, um weitere Parameter zu geckodriver.exe hinzuzufügen

Beispiel für eine Geckodriver-Wrapper-Bat-Datei (für Windows):

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

In Java können Sie den ausführbaren Pfad für den Geckodriver über webdriver.gecko.driver systemeigenschaft definieren:

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

Mach das einfach

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

Für Selenium 3.14.0 funktioniert dies 

System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE,"/dev/null");
0
Shantonu
import org.openqa.Selenium.firefox.FirefoxDriver
System.setProperty(
  "webdriver.gecko.driver",
  "C:\Users\geckodriver-v0.22.0-win64\geckodriver.exe"
)
System.setProperty(
  FirefoxDriver.SystemProperty.DRIVER_USE_MARIONETTE,
  "true"
)
System.setProperty(
  FirefoxDriver.SystemProperty.BROWSER_LOGFILE,
  "d:\Eclipse\scala_log.txt"
)
0
Purusothaman S

Dies ist die Linux-Version für die @voji-Antwort oben. Beachten Sie, wie ich oben in dem Kommentar sagte. Ich glaube nicht, dass --log fatal irgendetwas tut, zumindest nicht unter Linux. Die Umleitung zu NULL funktioniert jedoch gut genug für mich 

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

dateiname: geckodriver.sh (ausführbar)

#! /bin/bash
echo " ARGS: " [email protected]
geckodriver --log fatal "[email protected]" > /dev/null 2>&1
0
mancocapac