Каким образом получать логи из консоли браузера C#

Браузер Chrome
Собственно при инициализации драйвера указываю
options.SetLoggingPreference(LogType.Browser, LogLevel.All);

В конце самих тестов

var entries = _driver.Manage().Logs.GetLog(LogType.Browser);
    foreach (var entry in entries)
    {
    Console.WriteLine(entry.ToString());
    }

Selenium использую 4.0.0-alpha04
В итоге выбрасывается исключение
System.NullReferenceException: 'Ссылка на объект не указывает на экземпляр объекта.
Вроде как должны были зачинить в этой версии селена, кто в курсе текущей проблемы?
или есть другой способ получить данные из консоли браузера?

options.addArgument("--enable-logging");
options.addArgument("--log-net-log={path to log\\log name}.json")

безуспшено, все равно исключение выдает

Так ваш способ уже не нужен, надо только опции передать.

ок, даже если так все равно не работает. Вообще необходимо ориентироваться не на весь лог а на SERVE например и писать в лог только критичные ошибки. Плюс нужно писать не один большой лог, а только в моменты провала тестов, на это тригериться.
Собственно включение опций предполагает ведение одного лога на все случаи жизни?

соответственно просто включение опции не подходит

Нарвался на driver.manage.logs.get(:browser) fails on chromedriver 75.0.3770.8 · Issue #7270 · SeleniumHQ/selenium · GitHub
Советуют использовать chromeOptions “w3c: false” и .Manage().Logs.GetLog(LogType.Browser) должно заработать. Надо пробовать.

Подтверждаю.
После перехода на стандарт w3c данная фича перестала работать, раньше работала.

т.е я делаяю при инициализации драйвера

    chromeOptions.SetLoggingPreference(LogType.Browser, LogLevel.All);
    chromeOptions.AddArgument("w3c:false");

Затем по окончании кажного теста перед

driver.Quit();

Выполняю

  var entries = driver.Manage().Logs.GetLog(LogType.Browser);
            foreach (var entry in entries)
            {
                Console.WriteLine(entry.ToString());
            }

На текущий момент откатился к версиям:
Selenium.WebDriver - 3.141.0
Selenium.WebDriver.ChromeDriver - 78.0.3904.7000

В результате по -прежнему выбрасывает исключение

Немного не так.
Вот рабочий вариант:
chromeOptions.AddAdditionalCapability("w3c", false);

отругался

Message: Проблема инициализация драйвера для - Chrome
 There is already an option for the w3c capability. Please use the  instead.
Имя параметра: capabilityName

значение
chromeOptions.AddArgument("w3c:false"); удалил

работает ли такой подход на версии хрома 78.0 ? либо только с 75.0?

На 78 точно не работает, т.к. я сейчас на ней сижу. Остальные версии не знаю, но раньше точно работало :slight_smile:

хм, окей, как тогда быть, может есть другой способ логи браузера получать? стандартным способом на версии selenium 4.0.0-alpha04 не отрабатывает, что странно, вроде писали что зафиксили, либо что-то не то делаю

Выше уже писали, что можно писать в json файл.
А потом уже парсить его и выбирать нужные вам логи (по уровню и тд)

Это больно потом анализировать будет

я более того скажу, если тест упал, то джейсон неправильный получится

мы кодом проверяем последние символы, если не подходят по маске, то дописываем джейсон до валидного формата, сериализуем и потом по jpath ищем нужную информацию

а решение откатиться до версии браузера 75 и гонять тесты на ней при этом радоваться еще рабочей выборкой логов браузера к чему может в перспективе привести? Какова вероятность что тесты веба могут падать из за того что версия браузера не самая последняя? либо у клиента последняя версия и тест падает, а на версии 75 тест норм?

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