Перейти к основному содержимому

Хранилища и аутентификация

Управляйте файлами cookie, localStorage и sessionStorage, а также сохраняйте и восстанавливайте полное состояние браузера для сохранения аутентификации.

Сохраняйте и восстанавливайте полное состояние браузера (cookie + localStorage) с помощью одного файла. Это основной способ сохранять аутентификацию между сеансами.

playwright-cli state-save # сохранить в storage-state-{timestamp}.json
playwright-cli state-save auth.json # сохранить в файл с указанным именем
playwright-cli state-load auth.json # восстановить из файла

Файл содержит cookie, а также данные localStorage для каждого источника (origin), который посетил браузер. Никогда не добавляйте эти файлы в репозиторий — они содержат действующие токены аутентификации.

Рабочий процесс: сохраните состояние после входа, чтобы не входить повторно​

# Войдите один раз
playwright-cli open https://app.example.com/login
playwright-cli fill e3 "user@example.com"
playwright-cli fill e5 "password123"
playwright-cli click e7

# Сохраните состояние после аутентификации
playwright-cli state-save auth.json

# Позже полностью пропустите процедуру входа
playwright-cli state-load auth.json
playwright-cli goto https://app.example.com/dashboard
# Вход уже выполнен!
КомандаОписание
cookie-list [--domain] [--path]Вывести список cookie (при необходимости с фильтрацией по домену или пути)
cookie-get <name>Получить конкретный файл cookie
cookie-set <name> <value> [options]Установить файл cookie
cookie-delete <name>Удалить файл cookie
cookie-clearУдалить все файлы cookie
ПараметрОписание
--domain=<domain>Домен файла cookie
--path=<path>Путь файла cookie (по умолчанию: /)
--expires=<timestamp>Срок действия в формате временной метки Unix
--httpOnlyФлаг HTTP-only
--secureФлаг Secure
--sameSite=<value>Strict, Lax или None
$ playwright-cli cookie-list
# Name Value Domain HttpOnly Secure Expires
# session_id abc123 .example.com true true 2024-12-31
# theme dark .example.com false false Session

$ playwright-cli cookie-list --domain=.github.com
$ playwright-cli cookie-get session_id
$ playwright-cli cookie-set theme light
$ playwright-cli cookie-set session abc123 --domain=.example.com --secure --httpOnly
$ playwright-cli cookie-set remember_me token123 --expires=1893456000 --sameSite=Lax
$ playwright-cli cookie-delete session_id
$ playwright-cli cookie-clear
playwright-cli cookie-clear
playwright-cli reload
playwright-cli snapshot
# - heading "Sign in" [level=1]
# - textbox "Email" [ref=e3]

localStorage​

КомандаОписание
localstorage-listВывести список всех пар «ключ — значение»
localstorage-get <key>Получить значение по ключу
localstorage-set <key> <value>Установить значение
localstorage-delete <key>Удалить ключ
localstorage-clearУдалить все данные
$ playwright-cli localstorage-list
# Key Value
# user_preferences {"theme":"dark","lang":"en"}
# onboarding_done true

$ playwright-cli localstorage-get user_preferences
# {"theme":"dark","lang":"en"}

$ playwright-cli localstorage-set onboarding_done "false"
$ playwright-cli reload
# Появится мастер первоначальной настройки

sessionStorage​

Те же команды с префиксом sessionstorage-. Данные удаляются при закрытии вкладки.

playwright-cli sessionstorage-list
playwright-cli sessionstorage-get <key>
playwright-cli sessionstorage-set <key> <value>
playwright-cli sessionstorage-delete <key>
playwright-cli sessionstorage-clear

Массовые операции​

Команды для работы с отдельными ключами покрывают распространённые сценарии. Для более масштабных операций — добавления нескольких файлов cookie одновременно или записи набора ключей localStorage — используйте run-code:

playwright-cli run-code "async page => {
await page.context().addCookies([
{ name: 'session_id', value: 'sess_abc123', domain: 'example.com', path: '/', httpOnly: true },
{ name: 'preferences', value: JSON.stringify({ theme: 'dark' }), domain: 'example.com', path: '/' }
]);
}"

Для IndexedDB нет специальных команд; для работы с ним также используйте run-code:

playwright-cli run-code "async page => page.evaluate(() => indexedDB.databases())"