web-dev-qa-db-ja.com

Geckodriverを使用してSeleniumでFirefoxのログを無効にするにはどうすればよいですか?

私は使っている:

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

そして

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

これらのメソッドはどちらもロギングを停止するために何もしません。これが何らかの形で役立つ場合のコンソール出力は次のとおりです。

不思議なことに、私はpom.xmlにlog4j 1.2.17がありますが、log4j.propertiesまたはlog4j.xmlがなく、まったく使用していません。


明確にするために、ロギングと言うときは、IntelliJ IDEAのコンソール出力を意味します。 Javaを使用しています。

13
PizzaFrog

コンソールでログを表示しないようにするには、次を使用できます。

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();
13
Michael Medina

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を使用する場合、2つのオプションがあります。

  • カスタム引数を使用してgeckodriver.exeを個別に起動し、SeleniumからRemoteWebDriver経由で使用します
  • カスタムラッパーを作成して、geckodriver.exeに追加のパラメーターを追加します

Geckodriverラッパーバットファイルの例(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");
6
voji

こうするだけ

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

Selenium 3.14.0の場合、これは機能しています

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

これは、上記の@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
0
mancocapac