Selenium | LocalStorage

Vintik

Мечтатель
Автор темы
Проверенный
1,467
916
Привет, хочу логиниться в веб телеграм с помощью Selenium.
Значит, tg web сохраняет данные сессии в localStorage.
Вот чел написал класс на Пайтоне, который позволяет скопировать все данные localStorage:
Я же дописал эту фигню, эти данные сохраняются в файл.
Дальше, при перезапуске (первый раз я сам от руки залогинился в телеграм веб) эти данные должны как-то использоваться
Я не могу найти как запустить страницу webdriver.get вместе с нужными localStorage
Python:
def set(self, key, value):
        self.driver.execute_script("window.localStorage.setItem(arguments[0], arguments[1]);", key, value)
Этот код не работает или я не понимаю когда его использовать. Если до get - то ошибка (потому что пустая вкладка), если после get - то бессмысленно, так как проверка уже прошла на регистрацию.
 
  • Нравится
Реакции: Vespan

Fott

Простреленный
3,431
2,270
У тебя название функции говорит на себя - execute_script - выполнение JS скрипта. https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
Если до get - то ошибка (потому что пустая вкладка)
Потому что на странице типа data нельзя загружать скрипт. Ты можешь сделать для наглядности при запуске браузера открытие страницы example.com, потом свой код, и ты увидишь что у тебя item`ы загрузятся на страницу, что логично.
1706723100159.png
Ты хочешь использовать функцию выполнения скрипта на странице, до начала загрузки страницы.

Если телеграмм оттуда берет данные для авторизации, то ты можешь попробовать открыть страницу -> записать данные в localStoarge -> и перезагрузить страницу при помощи
Python:
driver.refresh()
Таким образом у тебя страница перезагрузится с данными.
 
Последнее редактирование: