Лучший способ проверить заголовки ответов HTTP с помощью Selenium [закрыто]

Мне нужен лучший способ проверить заголовки ответов HTTP с помощью Selenium. Я осмотрел документы Selenium и не увидел никакого простого способа сделать это. Помощь высоко ценится.

8 ответов


Я ответил на этот вопрос пару раз на StackOverflow. Найдите мои предыдущие ответы, чтобы откопать его. Ключ, который вы должны написать некоторый пользовательский код Java, который расширяет ProxyHandler и SeleniumServer. Вам также необходимо использовать выпуск после 1.0 beta 2.

Что касается людей, которые спрашивают почему вы хотели бы сделать это: есть много причин. В моем случае мы тестируем тяжелое приложение AJAX, и когда что-то идет не так, одной из первых вещей, которые мы отлаживаем, является сетевой провод. Это помогает нам увидеть, произошел ли вызов AJAX, и если да, то каков был ответ. Мы фактически автоматизировали сбор этой информации и захватываем ее (вместе со скриншотом) с каждым тестом Селена.


API captureNetworkTraffic () в DefaultSelenium захватывает заголовки http-запросов/ответов, и вы можете получить к ним доступ в формате html/xml/plain.

вот пример кода:

Selenium s = new DefaultSelenium(...);
s.start("captureNetworkTraffic=true");
s.open("http://www.google.com");
String xml = s.captureNetworkTraffic("xml"); // html, plain
s.stop();

Я бы не использовал селен для этого типа теста и предлагаю вам решить множество проблем тестирования с помощью разных инструментов. что мы делаем:

  • используйте модульные тесты для тестирования кода: методы и классы

  • интеграционные тесты, чтобы проверить, как компоненты приложения зависают вместе

  • простая функциональная тестовая платформа, такая как Canoo WebTest (или какой-то эквивалент), чтобы утверждать такие вещи, как заголовки кэша Http, базовая страница структура, простое перенаправление и настройка / значения cookie

  • Bespoke тесты для обеспечения действительности страниц к стандартам W3C

  • JSunit для тестирования классов и методов Javascript, которые мы создали

  • Selenium для тестирования функциональности/поведения пользовательского интерфейса и интеграции Javascript на эти страницы!--1-->

его стоит тратить время, нарушая ответственность за тестирование различных аспектов системы использование этих различных инструментов, так как использование только Селена может вызвать проблемы:

  • чем больше люкс, тем медленнее они бегут. Действительно, селен по своей сути медленнее по сравнению с другими упомянутыми инструментами
  • он хорошо обрабатывает поведение / функциональное тестирование, но тем не менее XPaths может быть хрупким и может потребовать увеличения количества времени и усилий для поддержания
  • обычно требуется настройка "как-будто-реальная жизнь" данные с вашим приложением, чтобы пройти пользовательские сценарии (которые могут быть грязными и занимают много времени)

есть также некоторые методы, которые вы можете или не можете встретить - который вы можете использовать, чтобы сделать ваши тесты Selenium более выносливым.


Я придумал обходной путь, который использует встроенный прокси-сервер, любезно предоставленный проектом Proxoid.

его легкий, в отличие от практически любой другой альтернативы (например, BrowserMob или даже LittleProxy)

см. HOWTO, с кодом, здесь: http://www.supermind.org/blog/968/howto-collect-webdriver-http-request-and-response-headers


то, что я сделал, чтобы справиться с этим с помощью Selenium (не Selenium RC), было конвертировать HTML-тесты в JSP, а затем использовать Java, где это необходимо для чтения заголовков или делать все, что JavaScript (selenium-это просто Javascript) не мог сделать.

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


Мне кажется, что может быть очень полезно проверить заголовки ответов HTTP из selenium. Не в 100% случаев, возможно ... но некоторые, безусловно, есть. Если вы проверяете последовательность страниц, кажется, было бы полезно проверить некоторые заголовки ответов как часть этого тестирования (Content-Type и Pragma leap to mind).


Ну, я надеялся узнать, содержит ли свойство Accept-Encoding из HTTP head "gzip", потому что в нашей компании мы сжимаем CSS и JS-файлы в нашем веб-приложении gzip, и мы хотим проверить его Selenim после каждой фиксации.


прочитайте куки-файлы сеанса из Selenium, а затем используйте настоящую библиотеку HTTP за пределами Selenium для запроса определенной страницы.

вот код Python:

# get session cookies from Selenium
cookies = {}
for s_cookie in self.selenium.get_cookies():
    cookies[s_cookie["name"]]=s_cookie["value"]

# request the pdf using the cookies:
response = requests.get(self.full_url('/vms/business_unit/2002/operational_unit/200202/guest/40/bill/pdf/'), cookies = cookies)
self.assertEqual(response.headers["content-type"], "application/pdf")