Как отключить ведение журнала 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.
Ответы
Ответ 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);