如何使用Geckodriver禁用Selenium中的Firefox日志记录?

Piz*_*rog 13 java firefox logging selenium geckodriver

我在用:

  • firefox版本50.1.0
  • geckodriver版本0.11.1
  • selenium-java 3.0.1

我试过了

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();
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

这些方法都没有做任何事情来阻止记录.如果这有助于某种方式,这是控制台输出:

对于那些想知道的人,我有log4j 1.2.17在我的pom.xml但没有log4j.propertieslog4j.xml我根本不使用它.


澄清一下:当我说日志记录时,我指的是IntelliJ IDEA中的控制台输出.我正在使用Java.

小智 14

要在控制台中看不到日志,可以使用以下命令:

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();
Run Code Online (Sandbox Code Playgroud)


voj*_*oji 6

您可以在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]
Run Code Online (Sandbox Code Playgroud)

如果你使用selenium的geckodriver,你有两个选择:

  • 使用自定义参数分别启动geckodriver.exe,并通过RemoteWebDriver从selenium中使用它
  • 创建自定义包装器,以向geckodriver.exe添加额外的参数

示例geckodriver包装器bat文件(用于windows):

@ECHO OFF
ECHO Starting geckodriver: %0 %*
.\GeckoDriver\geckodriver.exe --log fatal %* > NUL 2>&1
Run Code Online (Sandbox Code Playgroud)

在java中,您可以通过webdriver.gecko.driver系统属性定义geckodriver可执行路径:

System.setProperty("webdriver.gecko.driver", "c:/selenium/geckodriver/gdrvwrapper.bat");
Run Code Online (Sandbox Code Playgroud)


小智 5

就这样做

System.setProperty(FirefoxDriver.SystemProperty.DRIVER_USE_MARIONETTE,"true");
System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE,"/dev/null");
driver = new FirefoxDriver();
Run Code Online (Sandbox Code Playgroud)