Как можно сохранить сеанс в 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>
Для сохранения и использования сессии в 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()`, вы сможете использовать сохраненную сессию при следующих запусках скрипта без необходимости повторной авторизации.
Как сделать так, чтобы при запуске скрипта, соответственно, переходе по ссылке, каждый раз не открывалась новая сессия?
Самый простой вариант - использовать отдельный профиль хрома (независимая постоянная сессия браузера):
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()