Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Как отследить ошибку 500 selenium + python

python
webdriver
Теги: #<Tag:0x00007fedb968e648> #<Tag:0x00007fedb968e4e0>

#1

Привет,
У меня есть форма, после её заполнения я отпровляю, проблема в том что когда я её отпровляю в console я вижу ошибку 500 но форма осталась заполнена и не посылается. Как я могу отловить 500 ошибку?


(Bolatbek) #2

Родными средствами никак.
Говорят (не пробовал) эту задачу решить поможет browsermob proxy.
Альтернатива - нажали кнопку, не сработало, отправили request , проверили статус.


#3

а как после click() я отпровляю request через httplib?


(Bolatbek) #4

Кликнули, не увидели результата, то есть тест уже зафейлился. Но чтобы для диагностики ошибок точно понять причину падения, можно отдельно питоновскими средствами отправить запрос к серверу. Как вариант. Может кто лучше идею предложит.
Имею ввиду, в том же тесте, но без вебдрайвера. Простой httpзапрос (тем же httplib)- адрес то вам известен?


#5

Пытался с httplib, проблема в том что страница только перезагружается и посылает 200 а в console log 500.


(Bolatbek) #6

Можно скрин того, о чём вы говорите? Адреса замажьте.


#7


(Bolatbek) #8

Так это у вас какой-то скрипт пишет в консоль.
А есть ли 500 ошибка во вкладке network?


#9

Есть, а что я там должен видить?


(Bolatbek) #10

Там наверняка увидите xhr запросы с кодом ответа 500. Вам надо с помощью того же httplib отправить подобный post запрос к серверу. В случае, если придет 500 - вывести в л ог. ТЕст все равно зафейлится, вы же просто хотите в логах автотестов видеть причину падения, верно?


#11

Да, я просто поставлю проверку у себя в скрипте, если 500 break и досведания. Спасибо за помощь!


(Юрий Аксютин) #12

для c#:

        var logs = WebDriver.Manage().Logs.GetLog(LogType.Browser);

        StringBuilder consoleLogs = new StringBuilder();
        consoleLogs.AppendLine();
        consoleLogs.AppendLine($"---------------------------------------------------- Browser {SelectedBrowser} logs ----------------------------------------------------");
        foreach (var l in logs)
        {
            consoleLogs.AppendLine(l.ToString());
        }

так я записываю браузерные логи в общий лог файл после окончания теста, так как даже если все прошло правильно, это не означает, что в консоли не было ошибок).
Можете проанализировать лог как строку, либо LogEntry содержит проперти “Level”


#13

Через BrowserMob отловить можно. А логи, вроде бы, не из всех браузеров одинаково получаются.

Просто, прежде чем усложнять, можно вообще рассмотреть другой способ. Есть несколько уровней тестирования. Анализ ответов с сервера - это уровень бэкенд-тестирования. Можно для этого написать бэкенд-тесты. Если тестим пользовательский интерфейс, нам все равно, что там в логе и в ответах сервера.

Может быть, там просто реализация такая: например, делается несколько попыток отправки, и ошибка 500 в одной из попыток - это нормально? (Понятно, что это ненормально, но у нас ведь не на это требования). Увидели ошибку - хорошо, можно в описание бага вставить. А фейлить тест надо по другим признакам, видным пользователю: или страница не поменялась после отправки, или введенные данные нигде не отображаются, смотря что там должно происходить.


(Bolatbek) #14

Весь юмор в том, что автор топика не спрашивает, как ему лучше протестировать этот кейс.
Он спросил - как отловить конкретно ошибку 500. Ему ответили.
Естественно, что если бы он спросил по-другому, мы бы и отвечали по-другому, примерно как вы.