Подтвердить что ты не робот

Как отключить ведение журнала Firefox в Selenium с помощью Geckodriver?

Я использую:

  • firefox version 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);

ни один из этих методов не делает ничего, чтобы остановить ведение журнала. Вот консольный вывод, если это помогает:

Для тех, кто задается вопросом, у меня есть log4j 1.2.17 в моем pom.xml, но у меня нет log4j.properties или log4j.xml, и я вообще не использую его.


Чтобы уточнить: когда я говорю о регистрации, я имею в виду вывод консоли в IntelliJ IDEA. Я использую Java.

4b9b3361

Ответ 1

Чтобы не видеть журналы в консоли, вы можете использовать следующее:

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

Ответ 2

Вы можете определить желаемый уровень ведения журнала по командной строке в файле 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]

Если вы используете geckodriver из селена, у вас есть два варианта:

  • Запустите geckodriver.exe отдельно с помощью настраиваемых аргументов и используйте его из селена поверх RemoteWebDriver
  • Создайте настраиваемую оболочку, чтобы добавить дополнительные параметры в geckodriver.exe

Пример файла bat файла оболочки geckodriver (для окон):

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

В java вы можете определить исполняемый путь geckodriver поверх системного свойства webdriver.gecko.driver:

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

Ответ 3

Просто сделай это

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

Ответ 4

Это версия linux для ответа @voji выше. Обратите внимание, как я сказал выше в комментарии. Я не верю, что -log фатальный ничего не делает, по крайней мере, не на Linux. Однако перенаправление на NULL работает достаточно хорошо для меня

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

filename: geckodriver.sh(исполняемый файл)

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

Ответ 5

Для селена 3.14.0 это работает

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

Ответ 6

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