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

Я использую:

  • фаерфокс версия 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.17 в моем pom.xml, но нет log4j.properties или log4j.xml, и я его вообще не использую.


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


person maxbfuer    schedule 29.12.2016    source источник
comment
Почему вы используете geckodriver? Это необходимо для Firefox? о, хорошо, это новое в селене 3   -  person Pascal Heraud    schedule 30.12.2016
comment
Если не ошибаюсь, Geckodriver нужен для Firefox с selenium 3.0.0 и выше   -  person maxbfuer    schedule 30.12.2016
comment
Возможный дубликат Как отключить Драйвер марионетки/геккона регистрируется в селене 3   -  person Suresh Kumar    schedule 02.08.2018


Ответы (9)


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

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();
person Michael Medina    schedule 19.09.2017
comment
Как мне установить уровень журнала марионеток для предупреждения? - person Jonathan; 23.09.2018
comment
Из seleniumhq.github .io/selenium/docs/api/java/org/openqa/selenium/, BROWSER_LOGFILE определяет расположение файла, в котором должен храниться журнал Firefox --› но я не вижу файл журнала в /dev/ null (этот файл не существует) Сохраняет ли /dev/null его в никуда? - person IceTea; 01.04.2019
comment
@IceTea проверить это: en.wikipedia.org/wiki/Null_device /dev/null отбрасывает все, как мусор - person Daniel Eisenreich; 19.11.2019

Вы можете определить желаемый уровень ведения журнала через командную строку в 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 (для Windows):

@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");
person voji    schedule 09.03.2017
comment
Я пошел с этим ответом, но настройка уровня журнала ничего не дала мне в Linux. Это сработало, потому что вывод перенаправляется на ноль. Вы можете попробовать это, не добавляя часть › NUL 2›&. Я добавил версию для Linux ниже - person mancocapac; 16.09.2017
comment
Бат файл еще нужен? или есть способ сделать это программно? - person Arya; 22.10.2017
comment
Системные свойства позволяют сделать это прагматично. см. другой ответ (ы) - person Nicholas DiPiazza; 07.03.2018
comment
Как добавить уровень журнала geckodriver из java? - person Jonathan; 23.09.2018

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

System.setProperty(FirefoxDriver.SystemProperty.DRIVER_USE_MARIONETTE,"true");
System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE,"/dev/null");
driver = new FirefoxDriver();
person Akash    schedule 27.02.2018
comment
Как установить уровень журнала на warn? - person Jonathan; 23.09.2018

Я использую безголовый драйвер Firefox на C#.
Чтобы отключить консоль ведения журнала 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);
person Zeeshan    schedule 14.06.2020

Это версия Linux для ответа @voji выше. Обратите внимание, как я сказал выше в комментарии. Я не верю, что --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
person mancocapac    schedule 16.09.2017

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

System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE,"/dev/null");
person Shantonu    schedule 03.02.2019

Это может быть немного хакерским, но оно может быстро выполнить работу без необходимости кодирования. Учитывая, что вы знаете точное местоположение вашего файла и запускаете свой код в Linux, вы можете просто перейти в этот каталог и

rm geckodriver.log
ln -s /dev/null geckodriver.log
person teesid    schedule 17.06.2020

profile.setPreference("webdriver.log.init", true);

работает, потому что он обманывает веб-драйвер, заставляя его поверить, что журнал уже был инициализирован, поэтому он не будет его инициализировать, и журнал не будет создан.

person user1593165    schedule 06.11.2020

person    schedule
comment
Я получаю сообщение об ошибке И предупреждение об устаревании, даже если я изменяю его, чтобы больше не выдавать ошибок. Это должна быть старая версия Selenium - person Jonathan; 23.09.2018