Ответ
HTTP Cookies — это небольшие фрагменты данных (пары ключ-значение), которые сервер отправляет в HTTP-ответе (заголовок Set-Cookie), а браузер клиента сохраняет и автоматически отправляет обратно с последующими запросами к тому же домену (заголовок Cookie). В контексте тестирования веб-приложений важно понимать их роль и уметь с ними работать.
Основные цели использования:
- Управление сессией: Самый частый случай. Сессионный cookie (например,
JSESSIONID,sessionid) идентифицирует аутентифицированную пользовательскую сессию. - Персонализация: Сохранение предпочтений пользователя (язык, тема).
- Отслеживание: Аналитика и таргетированная реклама (трекинг-cookies).
Ключевые атрибуты cookie с точки зрения тестирования:
Expires/Max-Age: Срок жизни (сессионный или постоянный).DomainиPath: Определяют, к каким запросам cookie будет прикреплён.Secure: Передача только по HTTPS.HttpOnly: Запрет доступа к cookie через JavaScript (защита от XSS).SameSite: Защита от CSRF-атак (Strict,Lax,None).
Пример работы с cookies в UI-автотестах (Selenium WebDriver + Python):
from selenium import webdriver
# 1. Получение cookies после логина
driver.get("https://example.com/login")
# ... выполняем шаги аутентификации ...
all_cookies = driver.get_cookies() # Получить список всех cookies
print(f"Cookies after login: {all_cookies}")
# 2. Поиск конкретного сессионного cookie
session_cookie = driver.get_cookie("sessionid")
assert session_cookie is not None, "Сессионный cookie не найден!"
assert session_cookie['httpOnly'] == True, "Cookie должен быть защищённым (HttpOnly)"
# 3. Добавление cookie для обхода логина в другом тесте (предварительная настройка состояния)
new_cookie = {'name': 'preferences', 'value': 'lang=en', 'path': '/'}
driver.add_cookie(new_cookie)
# 4. Удаление cookie
driver.delete_cookie("sessionid")
# После удаления сессионного cookie пользователь должен оказаться разлогиненным.
При тестировании API (например, с помощью Postman или REST Assured) cookies часто передаются и проверяются через соответствующие заголовки.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶