15

我在用:

  • 火狐版本 50.1.0
  • 壁虎驱动版本 0.11.1
  • 硒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();

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

这些方法都没有做任何事情来停止记录。如果这有帮助,这里是控制台输出:

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


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

4

9 回答 9

15

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

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();
于 2017-09-19T19:26:29.647 回答
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]

如果你使用 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

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

System.setProperty("webdriver.gecko.driver", "c:/selenium/geckodriver/gdrvwrapper.bat");
于 2017-03-09T15:26:38.233 回答
5

就这样做

System.setProperty(FirefoxDriver.SystemProperty.DRIVER_USE_MARIONETTE,"true");
System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE,"/dev/null");
driver = new FirefoxDriver();
于 2018-02-27T17:50:24.877 回答
3

我在 C# 中使用无头 Firefox 驱动程序。
要禁用 geckoDriver 日志控制台,下面的代码似乎对我有用:

FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(Directory.GetCurrentDirectory());
service.HideCommandPromptWindow = true;
FirefoxOptions options = new FirefoxOptions();
options.AddArguments("--headless");
options.LogLevel = FirefoxDriverLogLevel.Fatal;
WebDriver = new FirefoxDriver(service, options);
于 2020-06-14T08:33:19.493 回答
0

这是上面@voji 答案的linux 版本。请注意我在上面的评论中所说的。我不相信 --log fatal 没有任何作用,至少在 linux 上没有。但是重定向到 NULL 对我来说效果很好

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

文件名:geckodriver.sh(可执行文件)

#! /bin/bash
echo " ARGS: " $@
geckodriver --log fatal "$@" > /dev/null 2>&1
于 2017-09-16T20:42:42.550 回答
0
profile.setPreference("webdriver.log.init", true);

有效,因为它欺骗 webdriver 相信日志已经被初始化,所以它不会初始化它并且不会产生日志。

于 2020-11-06T10:23:10.817 回答
0

对于 selenium 3.14.0 ,这是有效的

System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE,"/dev/null");
于 2019-02-03T08:29:36.453 回答
0

这可能有点hacky,但它可以快速完成工作而无需任何编码。鉴于您知道文件的确切位置并在 Linux 上运行代码,您只需 cd 进入该目录并

rm geckodriver.log
ln -s /dev/null geckodriver.log
于 2020-06-17T09:29:41.093 回答
-1
  GeckoDriverService gecko = new GeckoDriverService(new File("c:/selenium/geckodriver.exe"), 4444, ImmutableList.of("--log=fatal"), ImmutableMap.of());
  gecko.sendOutputTo(new FileOutputStream("gecko_log.txt"));
  gecko.start();

  FirefoxOptions opts = new FirefoxOptions().setLogLevel(Level.OFF);
  DesiredCapabilities capabilities = opts.addTo(DesiredCapabilities.firefox());
  capabilities.setCapability("marionette", true);
  driver = new FirefoxDriver(gecko, capabilities);
于 2017-04-18T09:11:46.903 回答