t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

csharp
selenium
webdriver
Теги: #<Tag:0x00007fb2f50f39d0> #<Tag:0x00007fb2f50f3890> #<Tag:0x00007fb2f50f3750>

(Максим Лаптев) #1

Браузер 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: 'Ссылка на объект не указывает на экземпляр объекта.
Вроде как должны были зачинить в этой версии селена, кто в курсе текущей проблемы?
или есть другой способ получить данные из консоли браузера?


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

(Максим Лаптев) #3

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


(Vasily) #4

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


(Максим Лаптев) #5

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


(Максим Лаптев) #6

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


(Vasily) #7

Нарвался на https://github.com/SeleniumHQ/selenium/issues/7270
Советуют использовать chromeOptions “w3c: false” и .Manage().Logs.GetLog(LogType.Browser) должно заработать. Надо пробовать.


(Alexandr D.) #8

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


(Максим Лаптев) #9

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

    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

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


(Alexandr D.) #10

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


(Максим Лаптев) #11

отругался

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

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


(Максим Лаптев) #12

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


(Alexandr D.) #13

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


(Максим Лаптев) #14

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


(Alexandr D.) #15

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


(Максим Лаптев) #16

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


(Vladislav Abramov) #17

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

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


(Максим Лаптев) #18

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


(Alexandr D.) #19

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