Привет,
У меня есть форма, после её заполнения я отпровляю, проблема в том что когда я её отпровляю в console я вижу ошибку 500 но форма осталась заполнена и не посылается. Как я могу отловить 500 ошибку?
Родными средствами никак.
Говорят (не пробовал) эту задачу решить поможет browsermob proxy.
Альтернатива - нажали кнопку, не сработало, отправили request , проверили статус.
а как после click() я отпровляю request через httplib?
Кликнули, не увидели результата, то есть тест уже зафейлился. Но чтобы для диагностики ошибок точно понять причину падения, можно отдельно питоновскими средствами отправить запрос к серверу. Как вариант. Может кто лучше идею предложит.
Имею ввиду, в том же тесте, но без вебдрайвера. Простой httpзапрос (тем же httplib)- адрес то вам известен?
Пытался с httplib, проблема в том что страница только перезагружается и посылает 200 а в console log 500.
Можно скрин того, о чём вы говорите? Адреса замажьте.
Так это у вас какой-то скрипт пишет в консоль.
А есть ли 500 ошибка во вкладке network?
Есть, а что я там должен видить?
Там наверняка увидите xhr запросы с кодом ответа 500. Вам надо с помощью того же httplib отправить подобный post запрос к серверу. В случае, если придет 500 - вывести в л ог. ТЕст все равно зафейлится, вы же просто хотите в логах автотестов видеть причину падения, верно?
Да, я просто поставлю проверку у себя в скрипте, если 500 break и досведания. Спасибо за помощь!
для 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”
Через BrowserMob отловить можно. А логи, вроде бы, не из всех браузеров одинаково получаются.
Просто, прежде чем усложнять, можно вообще рассмотреть другой способ. Есть несколько уровней тестирования. Анализ ответов с сервера - это уровень бэкенд-тестирования. Можно для этого написать бэкенд-тесты. Если тестим пользовательский интерфейс, нам все равно, что там в логе и в ответах сервера.
Может быть, там просто реализация такая: например, делается несколько попыток отправки, и ошибка 500 в одной из попыток - это нормально? (Понятно, что это ненормально, но у нас ведь не на это требования). Увидели ошибку - хорошо, можно в описание бага вставить. А фейлить тест надо по другим признакам, видным пользователю: или страница не поменялась после отправки, или введенные данные нигде не отображаются, смотря что там должно происходить.
Весь юмор в том, что автор топика не спрашивает, как ему лучше протестировать этот кейс.
Он спросил - как отловить конкретно ошибку 500. Ему ответили.
Естественно, что если бы он спросил по-другому, мы бы и отвечали по-другому, примерно как вы.