При запуске автотеста в консоль валится куча сообщений от geckodriver:
|1536300673916|geckodriver|INFO|geckodriver 0.18.0|
|---|---|---|---|
|1536300673925|geckodriver|INFO|Listening on 127.0.0.1:9577|
|1536300674636|geckodriver::marionette|INFO|Starting browser C://Program Files//Mozilla Firefox//firefox.exe with args ["-marionette"]|
А также немного от самого selenium (как видно - шаблон у них разный):
сен 07, 2018 9:11:16 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Судя по зависимостям - selenium-java использует commons-logging. У меня подключен log4j2 и мост log4j-jcl, но в лог-файлы записи не попадают. Судя по красному цвету логов в консоли eclipse, запись идёт в stderr
Одинаковая ситуация и на Windows платформе и на Linux.
Существует ли возможность перехвата всех логов?.
Это нужно для сбора всей информации о тесте (лог событий, снимки экрана на определённых шагах и т.п.) и упаковки в архив типа “Результаты запуска теста №5.7z”
Selenium использует JUL. Видимо нужен адаптер log4j-jul. К сожалению нет возможности проверить.
Вывод geckodriver’а можно перенаправить в файл системной переменной webdriver.firefox.logfile, например -Dwebdriver.firefox.logfile=/dev/null
На сколько я помню, нужно сделать xml конфигурацию log4j2 и вставить туда FileAppender для записи логов. Но вроде как файл куда пишется лог будет заблоченый логером пока не остановить все тесты.
Небольшое уточнение - selenium (по крайней мере версии 3.14.0) использует commons-logging
указание
options.setLogLevel(FirefoxDriverLogLevel.ERROR);
уменьшило количество “мусора” в консоли, теперь там записи только от geckodriver-а:
1536561997084 geckodriver INFO geckodriver 0.18.0
1536561997096 geckodriver INFO Listening on 127.0.0.1:8062
1536561998606 addons.manager DEBUG Application has been upgraded
Вопрос теперь звучит так:
Как можно попросить selenium запускать geckodriver с параметром тип log-level или вообще указать - куда складывать логи?