Лучший способ проверки заголовков HTTP-ответов с помощью Selenium
Мне нужен лучший способ проверить заголовки HTTP-ответов с Selenium. Я просмотрел документы Selenium и не видел простых способов сделать это. Помощь высоко ценится.
Ответы
Ответ 1
Я ответил на этот вопрос пару раз на StackOverflow. Найдите мои предыдущие ответы, чтобы выкопать его. Ключ, в котором вам нужно написать какой-то пользовательский код Java, который расширяет ProxyHandler и SeleniumServer. Вам также необходимо использовать версию AFTER 1.0 beta 2.
Что касается людей, которые спрашивают, почему вы хотите это сделать: есть много причин. В моем случае мы тестируем тяжелое приложение AJAX, и когда все идет не так, одна из первых вещей, которую мы отлаживаем, - это сетевой провод. Это помогает нам увидеть, произошел ли звонок AJAX, и если да, то каков был ответ. Мы фактически автоматизировали сбор этой информации и фиксировали ее (вместе с скриншотом) с каждым тестом Selenium.
Ответ 2
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();
Ответ 3
Я бы не использовал Selenium для этого типа теста и предлагаю вам решить множество проблем тестирования с помощью разных инструментов. что мы делаем:
-
Используйте модульные тесты для проверки кода: методы и классы
-
Интеграционные тесты для проверки совместимости компонентов приложения
-
Простая функциональная тестовая среда, такая как Canoo WebTest (или некоторый эквивалент) для утверждения таких вещей, как заголовки кеша Http, базовая структура страницы, простое перенаправление и настройки/значения cookie
-
Выполнение тестов для обеспечения достоверности страниц по стандартам W3C
-
JSunit для тестирования классов и методов Javascript, которые мы создали
-
Селен для проверки функциональности/поведения пользовательского интерфейса и интеграции Javascript
на эти страницы
Его стоит потратить время, выбирая ответственность за тестирование различных аспектов системы, используя эти различные инструменты, поскольку использование только Selenium может вызвать проблемы:
- Чем больше набор, тем медленнее они работают. Действительно, селен по своей природе медленнее по сравнению с другими упомянутыми инструментами.
- Он хорошо справляется с поведением/функциональным тестированием, но, тем не менее, XPath могут быть хрупкими и могут потребовать увеличения времени и усилий для поддержания
- Обычно вам необходимо настроить "как-бы-реальную" данные с вашим приложением, чтобы выполнить пользовательские сценарии (которые могут быть беспорядочными и занимать много времени).
Есть также некоторые методы, которые вы можете или не могли найти, которые вы можете использовать, чтобы ваши тесты Selenium были более устойчивыми.
Ответ 4
Я придумал обходное решение, которое использует встроенный прокси-сервер, любезно предоставленный проектом Proxoid.
Его легкий, в отличие от практически любой другой альтернативы (например, BrowserMob или даже LittleProxy)
Смотрите HOWTO с кодом, здесь: http://www.supermind.org/blog/968/howto-collect-webdriver-http-request-and-response-headers
Ответ 5
То, что я сделал для этого, используя Selenium (не Selenium RC), состояло в том, чтобы преобразовать тесты HTML в JSP, а затем использовать Java, где необходимо читать заголовки, или делать что-то, что JavaScript (селен просто Javascript) не мог сделать.
Возможно, вы могли бы дать несколько подробностей о том, как вы планируете использовать Selenium?
Ответ 6
Мне кажется, что очень полезно тестировать заголовки ответов HTTP из селена. Не в 100% случаев, возможно... но, конечно же, есть некоторые. Если вы проверяете последовательность страниц, кажется, было бы полезно протестировать некоторые заголовки ответов как часть этого тестирования (Content-Type и Pragma прыгают на ум).
Ответ 7
Ну, я надеялся выяснить, содержит ли свойство Accept-Encoding из HTTP-заголовка "gzip", потому что в нашей компании мы сжимаем CSS и JS файлы в нашем веб-приложении gzip, и мы хотим проверить его Selenim после каждая фиксация.
Ответ 8
Прочитайте файлы cookie сеанса из 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")