← Назад к вопросам

Как можно установить cookie?

1.0 Junior🔥 83 комментариев
#Веб-тестирование#Инструменты тестирования

Комментарии (3)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Установка Cookies в Веб-Разработке и Тестировании

Установка cookie — фундаментальная операция как для разработки, так и для тестирования веб-приложений. С точки зрения QA Engineer, понимание методов установки необходимо для: тестирования функционала, зависящего от сессий; проверки безопасности; симуляции различных пользовательских сценариев; и отладки. Вот основные способы.

1. Установка Cookies на Стороне Сервера (Backend)

Это основной метод, которым приложение управляет пользовательской сессией, аутентификацией, настройками.

В Node.js (Express):

app.get('/set-cookie', (req, res) => {
    // Установка простого cookie
    res.cookie('username', 'alexey', { maxAge: 900000, httpOnly: true });
    // Установка signed cookie для защиты от подделки
    res.cookie('session', 'encrypted_data', { signed: true, secure: true });
    res.send('Cookie установлены');
});

В PHP:

<?php
// Установка cookie на 1 час
setcookie("user_id", "12345", time() + 3600, "/", "example.com", true, true);
?>

В Python (Django):

from django.http import HttpResponse

def set_cookie_view(request):
    response = HttpResponse("Cookie установлен")
    response.set_cookie('test_cookie', 'value', max_age=3600, httponly=True, samesite='Lax')
    return response

2. Установка Cookies на Стороне Клиента (Frontend JavaScript)

Прямое управление через document.cookie. ВАЖНО для QA: многие тесты автоматизации взаимодействуют с браузером именно так.

// Установка простого cookie
document.cookie = "theme=dark; path=/; max-age=86400"; // срок жизни 1 день

// Установка cookie с флагами Secure и HttpOnly (HttpOnly через JS НЕ установить!)
document.cookie = "preference=font_large; path=/; secure; samesite=strict";

// Функция для удобной установки
function setCookie(name, value, days, path = '/') {
    const expires = new Date(Date.now() + days * 864e5).toUTCString();
    document.cookie = `${name}=${encodeURIComponent(value)}; expires=${expires}; path=${path}`;
}
setCookie('user_language', 'ru', 30);

3. Установка Cookies через Инструменты Разработчика Браузера (DevTools)

Для ручного тестирования или отладки незаменимый метод.

  • Открыть DevTools (F12).
  • Перейти на вкладку Application (Chrome) или Storage (Firefox).
  • В левой панели выбрать Cookies и нужный домен.
  • Нажать на значок "+" или дважды кликнуть в области таблицы для добавления новой записи.
  • Заполнить поля:
    *   **Name** и **Value**.
    *   **Domain** и **Path**.
    *   **Expires/Max-Age** (можно установить `Session` или конкретную дату).
    *   Выставить флаги: **HttpOnly**, **Secure**, **SameSite**.

4. Установка Cookies в Автоматизированном Тестировании (Selenium WebDriver)

Ключевой навык для QA Automation Engineer. Позволяет предварительно настраивать состояние сессии перед тестом.

Python (Selenium):

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

# Способ 1: Добавление cookie через driver.add_cookie()
# ВАЖНО: Перед добавлением cookie необходимо сначала посетить домен, к которому cookie относится.
driver.add_cookie({
    'name': 'session_token',
    'value': 'abc123def456',
    'path': '/',
    'secure': True,
    'httpOnly': False,  # Обратите внимание: через Selenium нельзя установить true для HttpOnly
    'sameSite': 'Strict'
})

# Способ 2: Выполнение JavaScript
driver.execute_script("document.cookie = 'manual_cookie=test_value; path=/; max-age=3600';")

# Проверка, что cookie установлен
print(driver.get_cookies())

Java (Selenium):

import org.openqa.selenium.Cookie;

Cookie myCookie = new Cookie.Builder("userRole", "admin")
        .domain("example.com")
        .path("/")
        .isSecure(true)
        .build();
driver.manage().addCookie(myCookie);

5. Установка Cookies через Командную Строку или API-Инструменты

Полезно для API-тестирования или скриптов.

Использование cURL:

# Отправить запрос и сохранить полученные cookies в файл
curl -c cookies.txt -X POST https://api.example.com/login -d "user=test&pass=123"

# Отправить новый запрос, используя сохраненные cookies
curl -b cookies.txt https://api.example.com/profile

# Установить cookie прямо в запросе (имитация клиента)
curl -H "Cookie: custom_data=yes; experiment_group=A" https://example.com

Использование Postman:

  • Запрос может автоматически получать и сохранять cookie из ответов сервера.
  • Вручную добавить cookie можно в разделе Cookies (манипулятор cookies для домена), либо через вкладку Headers запроса.

Ключевые Аспекты для Тестирования, На Которые Нужно Обращать Внимание

  • Безопасность: Проверка флагов HttpOnly (защита от XSS), Secure (передача только по HTTPS), атрибута SameSite (защита от CSRF).
  • Валидация: Как сервер проверяет и обрабатывает поддельные или модифицированные cookie.
  • Сценарии: Очистка cookies должна приводить к logout'у. Истечение срока действия (max-age, expires) должно корректно обрабатываться.
  • Зависимость от домена и пути: Cookie, установленные для конкретного path (например, /admin), не должны быть доступны на других путях.
  • Ограничения: Браузерные ограничения на размер (обычно 4KB на cookie) и количество cookies на домен.

Понимание этих методов позволяет QA-инженеру эффективно тестировать авторизацию, персональные настройки, корзины покупок и другие функции, критически зависящие от механизма cookies.

Как можно установить cookie? | PrepBro