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

Может ли WebDriver работать с запросами?

Теги: #<Tag:0x00007f7484e3b778> #<Tag:0x00007f7484e3b688> #<Tag:0x00007f7484e3b5c0> #<Tag:0x00007f7484e3b390> #<Tag:0x00007f7484e3b2c8>

Добрый день!

Нужна инфа по вопросу: Умеет ли webdriver работать с запросами браузера, т.е. у меня есть возвращаемые запросы с бэка, и могу ли я каким-то образом сверить с помощью webdriver’а, что мне отдается фронту с бэка, как то так.
Заранее благодарен.

Может, но только через прокси, browsermob например

И причем тут драйвер?

Драйвер может работать через прокси, а уже сам прокси мониторит запросы, с которого можно доставать полученную информацию с бекенда.

Посмотрите тут

Нет не только через прокси, если используете chromedriver - все проще:

  1. Запускаем Chrome с дополнительными Capabilities:
    https://sites.google.com/a/chromium.org/chromedriver/capabilities

Нам нужен - perfLoggingPrefs object
enableNetwork - true

  1. Дальше собираем события -
    https://sites.google.com/a/chromium.org/chromedriver/logging/performance-log
1 Симпатия

Боже, зачем вы предлагаете решение проблемы не верным путем.

Есть библиотеки типо rest-assured заточенные под тестирования запросов api
Можно взять уровень ниже и использовать библиотеки от apache commons.
В общем гугли automation testing api back-end

3 Симпатий

Вы знаете это сравнимо с тем, что нужно определить течь масла в двигателе, и в вашей реализации это выглядит так: разогнать машину на трассе до 100 км\ч и периодически смотреть под днище капота, не льется ли масло, можно? можно! но ЗАЧЕМ? Для проверки статусов и ответов служат апи тесты! Не нужно это делать с помощью селениума.

7 Симпатий

Спасибо, но это я и так знал. Мне нужно это для проверки фронта с бэком, всё ли верно передается и отображается. Апи тесты и так есть.

ну так если не правильно будет, то ошибка взлетит)

Это будет очень жестко )) там сам по себе перформанс лог огромный будет, а еще из него вычленять события нетворка. Даже не знаю… да и только в хроме работает…

Ничего вычленять не нужно (теоретически)

for (LogEntry entry : driver.manage().logs().get(LogType.NETWORK)) {
    System.out.println(entry.toString());
}

Вы на практике это пробовали - в рантайме определять какой респонс получил клиент?

Практические эксперименты, но без использования в реальном проекте. Хотя в реальных проектах использовал другие типы логов

Если очень не хочется использовать прокси, то можно всё-таки заставить хром передавать нужную инфу.
Вот библиотечка - https://github.com/bayandin/devtools-proxy - Александр Баяндин автор
А вот доклад автора библиотеки на эту тему - https://www.youtube.com/watch?v=5wsLUtyA6ik

Сам не пробовал.

И тут сразу очевидный минус, по сравнению с прокси сервером - работать это будет только в chrome, в остальных браузерах - нет