Python Selenium保持浏览器开放接收新数据

问题描述 投票:1回答:1

我正在尝试保持Selenium浏览器打开并等待传递新信息。我正在使用网络服务器向我的计算机发送url参数,这会触发Selenium脚本每次都启动一个新实例。问题是我访问的网站要求我每次加载网站时登录,并且每10分钟有3次登录。

有没有办法可以启动selenium浏览器,保持实例打开,然后通过Web服务器传递新参数来利用浏览器实例?

python selenium webserver
1个回答
-1
投票

如果登录会话到期是问题,那么您可以使用cookie:

您可以使用此功能在登录后保存浏览器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并重新加载,然后您发现自己使用之前的会话登录

这是注入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
© www.soinside.com 2019 - 2024. All rights reserved.