Python Selenium Держите браузер открытым, получая новые данные - PullRequest
1 голос
/ 27 апреля 2019

Я пытаюсь держать браузер Selenium открытым и жду, когда будет передана новая информация. Я использую веб-сервер для отправки аргументов URL на мой компьютер, который запускает скрипт Selenium для запуска нового экземпляра каждый раз. Проблема в том, что веб-сайт, к которому я обращаюсь, требует, чтобы я входил в систему каждый раз, когда я загружаю сайт, и имеет ограничение в 3 входа в систему каждые 10 минут.

Есть ли способ запустить браузер селена, оставив экземпляр открытым, а затем передав новые аргументы через веб-сервер для использования экземпляра браузера?

1 Ответ

0 голосов
/ 27 апреля 2019

, если истечение срока сеанса входа в систему, то вы можете использовать куки:

Вы можете использовать эту функцию для сохранения файлов cookie браузера после входа в систему:

import logging 

def save_cookies(driver, store_cookies_file):
    cookies = []
    try:
        cookies = driver.get_cookies()
        with open(store_cookies_file, 'w') as file:
            file.write(json.dumps(cookies))
        print('Cookies saved to JSON file')

    except Exception as e:
        print('Could not save cookies to file')
        logging.exception(e)
    return cookies # return the cookies just in case you want to use them without reading from the saved file

позже, когда вы хотите получить доступ к сайту, на котором вы вошли, вы просто загружаете сайт, вставляете куки и перезагружаетесь, и вы входите в систему, используя предыдущую сессию

вот функция для добавления файлов cookie:

import logging

def add_login_cookies(driver, cookies):
    try:
        if cookies:
            for cookie in cookies:
                driver.add_cookie(cookie)
                print('Added Cookies')
        else:
            raise ValueError("No Cookies Passed !")

    except Exception as e:
        print("Could not add login cookies")
        logging.exception(e)

что вы собираетесь сделать, это:

### SAVING COOKIES 
driver.get('website.url')
....
your code to login
....
cookies = save_cookies(driver, "/path/to/store/cookies.json")

### USING THEM LATER
driver.get('website.url')
add_login_cookies(driver, cookies) # if the cookies varibale isn't accessible, read the cookies from the file you stored them in before
driver.refresh() # or use directly driver.get if you want to access a specific page in the website
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...