Cookies играют важную роль в веб-разработке и тестировании, так как они позволяют сохранять состояние сессий, аутентификацию и другие данные пользователя на стороне клиента. В контексте автоматизированного тестирования с использованием Playwright, работа с cookies является неотъемлемой частью взаимодействия с веб-приложениями. В этом разделе рассматриваются методы получения и установки cookies, а также примеры их использования для автоматизации тестирования.
Для получения cookies в Playwright используется метод
context.cookies(). Этот метод возвращает массив объектов,
представляющих cookies, которые доступны для текущего контекста
(например, для страницы или для всей сессии).
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();
// Навигация на страницу
await page.goto('https://example.com');
// Получение cookies
const cookies = await context.cookies();
console.log(cookies);
await browser.close();
})();
В результате выполнения этого кода в консоли будет выведен список cookies для текущего контекста. Каждый объект в массиве будет содержать информацию о cookie, такую как имя, значение, домен, путь, дата истечения срока действия и другие параметры.
Метод context.cookies() также позволяет получать cookies
для конкретных URL или страниц. Для этого необходимо передать массив URL
в качестве аргумента:
const cookies = await context.cookies('https://example.com');
Это может быть полезно в случаях, когда необходимо получить cookies для нескольких сайтов или страниц.
Playwright позволяет устанавливать cookies для контекста с помощью
метода context.addCookies(). Этот метод принимает массив
объектов, каждый из которых представляет собой cookie. Каждый объект
cookie должен содержать обязательные свойства, такие как
name, value, domain, а также
необязательные параметры, такие как path,
expires, httpOnly, secure и
другие.
Пример установки cookies:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();
// Установка cookies
await context.addCookies([{
name: 'myCookie',
value: 'cookieValue',
domain: 'example.com',
path: '/',
httpOnly: true,
secure: true
}]);
// Проверка наличия cookies
const cookies = await context.cookies();
console.log(cookies);
await browser.close();
})();
В этом примере создается cookie с именем myCookie и
значением cookieValue. Устанавливаются дополнительные
параметры, такие как httpOnly и secure,
которые обеспечивают, что cookie будет передаваться только по
безопасному каналу (через HTTPS) и не будет доступно через
JavaScript.
Контексты браузера: В Playwright cookies привязаны к контекстам браузера. Контекст браузера представляет собой изолированное окружение, где можно хранить свои cookies и сессии. Cookies, установленные в одном контексте, не будут доступны в другом. Это позволяет создавать несколько изолированных окружений в одном браузере, что полезно для тестирования разных пользователей или сессий.
HttpOnly и Secure: Если cookie имеет флаг
httpOnly, то оно не будет доступно через JavaScript
(например, через document.cookie). Это важно для
обеспечения безопасности и предотвращения доступа к cookies через
скрипты на странице. Если cookie имеет флаг secure, оно
будет передаваться только через HTTPS-соединение.
Срок действия cookie: Если cookie имеет срок
действия (поле expires), то оно будет удалено
автоматически, когда срок его действия истечет. Если срок действия не
указан, cookie будет удалено по завершении сессии.
Перезапись cookies: При установке новых cookies для существующего контекста или страницы, Playwright перезапишет старые cookies, если новые cookies имеют одинаковое имя и домен. Это важно учитывать при тестировании сценариев, связанных с аутентификацией или изменением состояния сессии.
Cookies и аутентификация: Один из наиболее распространенных случаев использования cookies — это тестирование сценариев, связанных с аутентификацией. Например, можно установить cookie, которая хранит токен аутентификации, и проверить, что веб-приложение правильно распознает пользователя при переходе на защищенную страницу.
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const context = await browser.newContext();
// Устанавливаем cookie с токеном аутентификации
await context.addCookies([{
name: 'authToken',
value: 'your-auth-token-here',
domain: 'example.com',
path: '/',
secure: true,
httpOnly: true
}]);
const page = await context.newPage();
await page.goto('https://example.com/dashboard');
// Проверка успешной аутентификации
const userProfile = await page.$('text=Welcome, User');
console.log(userProfile ? 'Аутентификация успешна' : 'Неудачная аутентификация');
await browser.close();
})();
В этом примере устанавливается cookie с токеном аутентификации и проверяется, успешно ли выполняется переход на защищенную страницу после установки cookie.
Cookies часто используются в различных сценариях тестирования, таких как:
Playwright предоставляет мощные инструменты для манипулирования cookies, что делает его удобным для тестирования и автоматизации работы с веб-приложениями.