Урок 21. Работа с cookie и локальным хранилищем в Selenium

Cookies и локальное хранилище позволяют сохранять данные о пользователе и сессии на сайте. Знание того, как работать с ними в Selenium, необходимо для автоматизации входа, тестирования авторизации и сохранения состояния между запусками скрипта.

Что такое cookie и локальное хранилище

  • Cookies — небольшие текстовые файлы, которые сайт сохраняет в браузере для хранения информации о сессии, настройках и авторизации.
  • Локальное хранилище (LocalStorage) — объект браузера для хранения данных на стороне клиента без ограничения на размер в отличие от cookies.
  • SessionStorage — временное хранилище данных на текущую сессию, очищается после закрытия вкладки.

Работа с cookies через Selenium

Selenium предоставляет методы для получения, добавления и удаления cookies.

Вот рабочий пример с реальным сайтом (возьмём Википедию, так как она даёт cookies без авторизации):

from selenium import webdriver
import time

# Запускаем браузер
driver = webdriver.Chrome()
driver.get("https://ru.wikipedia.org/")
time.sleep(2)  # ждём загрузку

# Получаем все cookies
all_cookies = driver.get_cookies()
print("Все cookies на Википедии:")
for c in all_cookies:
    print(c)

# Добавляем свою cookie
driver.add_cookie({"name": "my_test_cookie", "value": "hello_selenium"})

# Проверяем, что cookie добавлена
cookie = driver.get_cookie("my_test_cookie")
print("\nНовая cookie:", cookie)

# Удаляем добавленную cookie
driver.delete_cookie("my_test_cookie")
print("\nПосле удаления:", driver.get_cookie("my_test_cookie"))

# Закрываем браузер
driver.quit()

Результат

⚡ В этом примере:

  • driver.get_cookies() покажет список всех cookies, которые сайт установил.
  • driver.add_cookie(...) добавляет свою тестовую cookie.
  • driver.get_cookie("my_test_cookie") проверяет, что она появилась.
  • driver.delete_cookie("my_test_cookie") удаляет её.
  • Работа с локальным и sessionStorage через JavaScript

    Пример с localStorage — хранилищем браузера, куда сайты могут сохранять данные (например, токен авторизации, настройки пользователя, корзину товаров). В отличие от cookie, данные из localStorage не отправляются на сервер при каждом запросе, они остаются только в браузере.
    Возьмём сайт https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_webstorage_local — это демо для работы с localStorage.

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    import time
    
    # Запускаем браузер
    driver = webdriver.Chrome()
    driver.maximize_window()
    
    # Загружаем демо-страницу w3schools
    driver.get("https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_webstorage_local")
    
    # В iframe находится контент, нужно переключиться
    driver.switch_to.frame("iframeResult")
    
    # Выполним JS для добавления данных в localStorage
    driver.execute_script("localStorage.setItem('username', 'ivan');")
    
    # Читаем данные
    username = driver.execute_script("return localStorage.getItem('username');")
    print("Имя пользователя из localStorage:", username)
    
    time.sleep(2)
    
    # Удаляем один ключ
    driver.execute_script("localStorage.removeItem('username');")
    
    # Проверяем, что удалено
    username = driver.execute_script("return localStorage.getItem('username');")
    print("После удаления:", username)
    
    # Добавляем несколько значений
    driver.execute_script("localStorage.setItem('theme', 'dark');")
    driver.execute_script("localStorage.setItem('lang', 'ru');")
    
    # Читаем всё содержимое localStorage
    all_data = driver.execute_script("return {...localStorage};")
    print("Все данные в localStorage:", all_data)
    
    # Очищаем localStorage
    driver.execute_script("localStorage.clear();")
    
    # Проверяем
    all_data = driver.execute_script("return {...localStorage};")
    print("После очистки:", all_data)
    
    driver.quit()
    

    🔹 Что будет:

  • В localStorage запишется username = ivan.
  • Скрипт прочитает и выведет его.
  • Потом удалит username.
  • Добавит ещё два значения (theme, lang).
  • Выведет всё содержимое.
  • Полностью очистит хранилище.
  • Умение управлять cookies и локальным хранилищем позволяет обходить авторизацию, сохранять состояние сессий и автоматизировать сложные сценарии работы сайтов.

    Больше уроков по парсингу на parsertools.ru/lessons.