我正在尝试将以前保存的Cookie加载到新的浏览器会话中。
import pickle
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def load_cookies(browser):
with open("cookies.pickle", "rb") as cookie_file:
cookies = pickle.load(cookie_file)
for cookie in cookies:
browser.add_cookie(cookie)
def save_cookies(browser):
with open("cookies.pickle", "wb") as cookies_file:
pickle.dump(webbrowser.get_cookies(), cookies_file)
webbrowser = webdriver.Firefox()
webbrowser.get('https://www.google.com.ua')
time.sleep(6)
#save_cookies(webbrowser)
#load_cookies(webbrowser)
webbrowser.quit()
当我调用保存cookie的功能一切正常时,会创建带有cookie的文件。但是如果我在相同的代码中调用函数load_cookies(取消注释load_cookies,注释save_cookies)我得到了下一个错误消息:
Traceback (most recent call last):
File "F:\code\fifa\stoverflow.py", line 23, in <module>
load_cookies(webbrowser)
File "F:\code\fifa\stoverflow.py", line 14, in load_cookies
browser.add_cookie(cookie)
File "C:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 775, in add_cookie
self.execute(Command.ADD_COOKIE, {'cookie': cookie_dict})
File "C:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 311, in execute
self.error_handler.check_response(response)
File "C:\Python\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 237, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidCookieDomainException: Message: .google.com.ua
无法真正理解我做错了什么。根据我的理解,我在同一个域名我保存饼干,也许我错了。如果没有,将不胜感激任何帮助。
答案 0 :(得分:0)
对于我的问题,这不是确切的答案,但我已经找到了解决方法。我需要cookie,因为默认情况下selenium firefox驱动程序会在每次启动时加载新的空白配置文件。没有保存登录等。所以我的第一个想法是在每次会话后保存cookie,然后在每次新会话时加载它们。 但是它有一些简单的方法。您只需加载一些已在PC上使用的配置文件,即可访问以前保存的cookie。 这是代码如何加载firefox配置文件,希望它可能会帮助某人:
path = 'C:\\users\\...' #enter here your PATH TO PROFILE, usually it is in
#AppData folder and should ends like that:
#...Mozilla\\Firefox\\Profiles\\urprofile'
fox_profile = webdriver.FirefoxProfile(path)
webbrowser = webdriver.Firefox(fox_profile)
你很高兴用旧的配置文件而不是空的配置文件。希望它对某人有所帮助。