为什么我不能将Cookie上传到Selenium?

时间:2019-10-09 12:01:00

标签: python-3.x selenium cookies

我这样保存cookie:

auth_func()

# if successful auth
pickle.dump(driver.get_cookies(), open('cookies.pkl', 'wb'))

然后我尝试在相同的域上使用它们:

cookies = pickle.load(open('cookies.pkl', 'rb'))
for cookie in cookies:
    driver.add_cookie(cookie)

但是我得到了错误:

  

文件“ test.py”,第115行,在       user_agent = auth()在auth中的文件“ test.py”,第50行       driver.add_cookie(cookie)文件“ C:\ Python37 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py”,   add_cookie中的第894行       self.execute(Command.ADD_COOKIE,{'cookie':cookie_dict})文件“ C:\ Python37 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py”,   第321行,在执行中       self.error_handler.check_response(响应)文件“ C:\ Python37 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py”,   第242行,在check_response中       引发exception_class(消息,屏幕,堆栈跟踪)selenium.common.exceptions.InvalidArgumentException:消息:无效   参数:无效的“过期”(会话信息:chrome = 78.0.3904.44)

Cookies结构:

>>> cookies = pickle.load(open('cookies.pkl', 'rb'))
>>> for c in cookies:
...     c
...
{'domain': '.linkedin.com', 'expiry': 1633780372, 'httpOnly': False, 'name': '***********', 'path': '/', 'secure': False, 'value': '*************'}
...

1 个答案:

答案 0 :(得分:0)

问题是由于某些原因,cookie的名称错误。这样解决:

cookies = driver.get_cookies()
for cookie in cookies:
    if cookie.get('expiry', None) is not None:
        cookie['expires'] = cookie.pop('expiry')
pickle.dump(cookies, open('cookies.pkl', 'wb'))