我正在尝试保持Selenium浏览器打开并等待传递新信息。我正在使用网络服务器向我的计算机发送url参数,这会触发Selenium脚本每次都启动一个新实例。问题是我访问的网站要求我每次加载网站时登录,并且每10分钟有3次登录。
有没有办法可以启动selenium浏览器,保持实例打开,然后通过Web服务器传递新参数来利用浏览器实例?
如果登录会话到期是问题,那么您可以使用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