Как настроить использование Selenium для открытия страницы с предварительной авторизацией?

Как можно сохранить сеанс в Selenium, чтобы при следующем запуске скрипта избежать необходимости повторной авторизации? В этом случае используется авторизация через Telegram без использования логина и пароля. Каким образом можно настроить Selenium для сохранения и использования сохраненной сессии при открытии браузера? Ниже приведен пример кода, который нужно дополнить для достижения этой цели: <br/> <br/> <pre><code class="python">from selenium import webdriver
from selenium.webdriver.common.by import By
import time

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("user-data-dir=selenium")
driver_path = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
driver = webdriver.Chrome(options=chrome_options)

driver.get('https://')

button_element = driver.find_element(By.CLASS_NAME, 'checkin-day-today-label-check')
button_element.click()

time.sleep(10)
driver.quit()</code></pre>
  • 10 июля 2024 г. 1:12
Ответы на вопрос 2
Для сохранения и использования сессии в Selenium можно воспользоваться функционалом сохранения куки. Вот как можно модифицировать ваш код для сохранения и использования сохраненной сессии:

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

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("user-data-dir=selenium")
driver_path = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
driver = webdriver.Chrome(options=chrome_options)

driver.get('https://')

# Вместо обычной авторизации с помощью логина и пароля, используем Telegram или другую нативную авторизацию

# Запускаем код для авторизации через Telegram и получение кук
# Допустим, у нас есть функция authorize_telegram(), которая авторизует пользователя и возвращает куки
cookies = authorize_telegram()

# Добавляем куки в браузер
for cookie in cookies:
    driver.add_cookie(cookie)

# Переходим на страницу с уже авторизованным сеансом
driver.get('https://')

button_element = driver.find_element(By.CLASS_NAME, 'checkin-day-today-label-check')
button_element.click()

time.sleep(10)
driver.quit()
```

В функции `authorize_telegram()` необходимо реализовать логику авторизации пользователя через Telegram и возврат кук для добавления в браузер. После добавления кук в браузер с помощью `driver.add_cookie()`, вы сможете использовать сохраненную сессию при следующих запусках скрипта без необходимости повторной авторизации.
<blockquote>Как сделать так, чтобы при запуске скрипта, соответственно, переходе по ссылке, каждый раз не открывалась новая сессия?</blockquote> <br/> Самый простой вариант - использовать отдельный профиль хрома (независимая постоянная сессия браузера): <br/> <pre><code class="python">import os
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

# ChromeDriver path (https://sites.google.com/chromium.org/driver/downloads)
chromedriver_path = r'C:\project\chromedriver.exe'

# Chrome profile path
profile_dir = r'C:\project\chrome-profiles\1'

# Create chrome profile (run in console):
# $ chrome C:\project\chrome-profiles\1
#
# or
#
# auto create chrome profile (if need)
if not os.path.exists(profile_dir):
    os.makedirs(profile_dir)

# Using chrome profile
options = webdriver.ChromeOptions()
options.add_argument(f'--user-data-dir={profile_dir}')

# Init
service = Service(executable_path=chromedriver_path)
driver = webdriver.Chrome(service=service, options=options)

# Open website
driver.get('https://maps.yandex.ru/')

# Delay and close driver
time.sleep(10)
driver.quit()</code></pre> <br/>
Похожие вопросы