Задать вопрос
@DarkiDeuce

Как передать фалы cookie при открытии браузера в Selenium?

При входе на сайт выскакивает две таблички, с вопросом о совершеннолетии и указанием города, чтобы не вводить их хочу открыть сайт и передать ему куки файлы с готовой информацией о городе и совершеннолетии.

После открытия сайта ввёл все нужные параметры в ручную и сохранил куки в отдельный файл, чтобы потом загрузить их при повторном открытии.

Кусок кода:
from selenium import webdriver
import time
import pickle
from selenium.webdriver.chrome.service import Service

url = "https://magnit.ru/promo/"
s = Service('C:/<......>/chromedriver.exe')
driver = webdriver.Chrome(service=s)

try:
    driver.get(url=url)
    time.sleep(5)

    # pickle.dump(driver.get_cookies(), open("Cookie_magnit", "wb")) Файл создан предварительно.

    for cookie in pickle.load(open('Cookie_magnit', 'rb')):
        driver.add_cookie(cookie)

    driver.refresh()
    time.sleep(15)


После обновления страницы изменений нет. Хотя параметры куки соответствуют требованиям.

Возможно можно передать файлы куки в ручную, например, создав словарь с нужными параметрами, как в библиотеке requests?
  • Вопрос задан
  • 524 просмотра
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@DenisShahbazyan
Примерно так, у меня с логгером, но думаю разберешься.
def get_cookies(d: WebDriver) -> WebDriver:
    """Сохранение или получение cookies.
    """
    COOKIES_DIR.mkdir(exist_ok=True)

    if path.exists(COOKIES_FILE):
        d.get(URL)
        with open(COOKIES_FILE, 'rb') as file:
            for cookie in pickle.load(file):
                d.add_cookie(cookie)
            d.refresh()
            logger.info('Cookies добавлены к драйверу.')
            return d

    d.get(URL + URL_LOGIN)
    _wait(d, By.XPATH, login_by_password)

    d.find_element(By.XPATH, login_by_password).click()
    _wait(d, By.XPATH, login_input_username)

    d.find_element(By.XPATH, login_input_username).send_keys(LOGIN)
    d.find_element(By.XPATH, login_input_password).send_keys(PASSWORD)
    d.find_element(By.XPATH, login_submit).click()
    _wait(d, By.XPATH, mainmenu_my_resumes)

    if _wait(d, By.XPATH, account_login_error):
        raise LoginOrPasswordErrorException

    with open(COOKIES_FILE, 'wb') as file:
        pickle.dump(d.get_cookies(), file)
        logger.info('Cookies записаны в файл.')

    return d
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы