Как настроить и получить кросс-доменные доступы для локального и сессионного хранилища с помощью Selenium на Python?

Вопросы и ответы

Я хочу установить локальное и сеансовое хранилище для сайта: “https:/example.org” и получить их, один домен будет – “web.op.org”, а второй – “web.my_site.org”

Я искал на stackoverflow, но не нашел ничего по этим вопросам

Ответ

Для работы с локальным и сеансовым хранилищем (localStorage и sessionStorage) через Selenium в Python, вам нужно учитывать ограничения браузера на доступ к данным по разным доменам. Браузеры ограничивают доступ к localStorage и sessionStorage, чтобы предотвратить потенциальные уязвимости в безопасности, такие как кража информации между сайтами. Тем не менее, вы можете использовать JavaScript через Selenium для работы с данными.

Вот пошаговое руководство по тому, как установить и получить данные в localStorage и sessionStorage для разных доменов с использованием Selenium в Python:

1. Установка Selenium и веб-драйвера

Сначала убедитесь, что у вас установлен Selenium:

pip install selenium

Также скачайте соответствующий веб-драйвер для вашего браузера (например, Chrome или Firefox) и добавьте его в PATH.

2. Установка и получение данных в localStorage и sessionStorage

Используйте следующий скрипт для работы с localStorage и sessionStorage на разных доменах:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# Инициализация драйвера (например, Chrome)
driver = webdriver.Chrome()

# Функция для установки значения в localStorage
def set_local_storage(driver, key, value):
    driver.execute_script(f"localStorage.setItem('{key}', '{value}');")

# Функция для получения значения из localStorage
def get_local_storage(driver, key):
    return driver.execute_script(f"return localStorage.getItem('{key}');")

# Функция для установки значения в sessionStorage
def set_session_storage(driver, key, value):
    driver.execute_script(f"sessionStorage.setItem('{key}', '{value}');")

# Функция для получения значения из sessionStorage
def get_session_storage(driver, key):
    return driver.execute_script(f"return sessionStorage.getItem('{key}');")

try:
    # Переходим на первый домен
    driver.get("https://web.op.org")

    # Устанавливаем значения в localStorage и sessionStorage
    set_local_storage(driver, 'myLocalKey', 'localValue1')
    set_session_storage(driver, 'mySessionKey', 'sessionValue1')

    # Проверяем значения
    print(f"LocalStorage: {get_local_storage(driver, 'myLocalKey')}")
    print(f"SessionStorage: {get_session_storage(driver, 'mySessionKey')}")

    # Переходим на второй домен
    driver.get("https://web.my_site.org")

    # Устанавливаем значения в localStorage и sessionStorage
    set_local_storage(driver, 'myLocalKey', 'localValue2')
    set_session_storage(driver, 'mySessionKey', 'sessionValue2')

    # Проверяем значения
    print(f"LocalStorage: {get_local_storage(driver, 'myLocalKey')}")
    print(f"SessionStorage: {get_session_storage(driver, 'mySessionKey')}")

    # Переходим обратно на первый домен
    driver.get("https://web.op.org")

    # Проверяем значения localStorage и sessionStorage
    print(f"LocalStorage: {get_local_storage(driver, 'myLocalKey')}")
    print(f"SessionStorage: {get_session_storage(driver, 'mySessionKey')}")

finally:
    # Закрываем драйвер
    driver.quit()

Объяснение кода:

  1. Инициализация драйвера: Мы создаем экземпляр веб-драйвера Chrome (вы можете использовать другой драйвер по вашему выбору).
  2. Функции для работы с хранилищем: Мы определяем функции для установки и получения значений из localStorage и sessionStorage с помощью JavaScript.
  3. Переходы по доменам: Мы сначала переходим на один домен, устанавливаем значения в хранилища, затем переходим на другой домен и выполняем аналогичные действия.
  4. Проверка значений: Мы выводим значения, чтобы убедиться, что они правильно установлены и извлекаются.
  5. Закрытие драйвера: В конце работы скрипта драйвер закрывается.

Важные замечания:

  • LocalStorage и SessionStorage изолированы по доменам, поэтому вы не сможете получить данные одного домена с другого.
  • Убедитесь, что ваши цели доступны и поддерживают использование JavaScript, так как эти функции основаны на выполнении JavaScript-кода в контексте страницы.
  • Если требуется работа с несколькими доменами в рамках одного теста, используйте метод webdriver для переключения между доменами.

Оцените материал
Добавить комментарий

Капча загружается...