PDA

Просмотр полной версии : Selenium | LocalStorage


Vintik
30.01.2024, 17:06
Привет, хочу логиниться в веб телеграм с помощью Selenium.

Значит, tg web сохраняет данные сессии в localStorage.

Вот чел написал класс на Пайтоне, который позволяет скопировать все данные localStorage:

How to get the localStorage with Python and Selenium WebDriver

What's the equivalent of: driver.get_cookies() to get the LocalStorage instead of Сookies?

stackoverflow.com


Я же дописал эту фигню, эти данные сохраняются в файл.

Дальше, при перезапуске (первый раз я сам от руки залогинился в телеграм веб) эти данные должны как-то использоваться

Я не могу найти как запустить страницу webdriver.get вместе с нужными localStorage

Python:






def
set
(
self
,
key
,
value
)
:
self
.
driver
.
execute_script
(
"window.localStorage.setItem(arguments[0], arguments[1]);"
,
key
,
value
)




Этот код не работает или я не понимаю когда его использовать. Если до get - то ошибка (потому что пустая вкладка), если после get - то бессмысленно, так как проверка уже прошла на регистрацию.

Fott
31.01.2024, 21:43
У тебя название функции говорит на себя - execute_script - выполнение JS скрипта. https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage



Если до get - то ошибка (потому что пустая вкладка)


Потому что на странице типа data нельзя загружать скрипт. Ты можешь сделать для наглядности при запуске браузера открытие страницы example.com, потом свой код, и ты увидишь что у тебя item`ы загрузятся на страницу, что логично.

Ты хочешь использовать функцию выполнения скрипта на странице, до начала загрузки страницы.

Если телеграмм оттуда берет данные для авторизации, то ты можешь попробовать открыть страницу -> записать данные в localStoarge -> и перезагрузить страницу при помощи







Python:






driver
.
refresh
(
)




Таким образом у тебя страница перезагрузится с данными.

Jogan
22.05.2024, 22:03
Привет, хочу логиниться в веб телеграм с помощью Selenium.
Значит, tg web сохраняет данные сессии в localStorage.
Вот чел написал класс на Пайтоне, который позволяет скопировать все данные localStorage:

How to get the localStorage with Python and Selenium WebDriver

What's the equivalent of: driver.get_cookies() to get the LocalStorage instead of Сookies?

stackoverflow.com


Я же дописал эту фигню, эти данные сохраняются в файл.
Дальше, при перезапуске (первый раз я сам от руки залогинился в телеграм веб) эти данные должны как-то использоваться
Я не могу найти как запустить страницу webdriver.get вместе с нужными localStorage

Python:






def
set
(
self
,
key
,
value
)
:
self
.
driver
.
execute_script
(
"window.localStorage.setItem(arguments[0], arguments[1]);"
,
key
,
value
)




Этот код не работает или я не понимаю когда его использовать. Если до get - то ошибка (потому что пустая вкладка), если после get - то бессмысленно, так как проверка уже прошла на регистрацию.


Здравствуйте, подскажите пожалуйста удалось ли вам решить этот вопрос?

Столкнулся с такой же проблемой, но на java

Vintik
23.05.2024, 13:28
Здравствуйте, подскажите пожалуйста удалось ли вам решить этот вопрос?
Столкнулся с такой же проблемой, но на java


Привет, нет, к сожалению, не удалось. И поэтому Selenium мне не помог в этом смысле, пришлось каждый раз сначала запускать страницу (открывать её в окне), а после уже руками вводить данные.