Reputation: 956
I save cookies like this:
auth_func()
# if successful auth
pickle.dump(driver.get_cookies(), open('cookies.pkl', 'wb'))
Then I try to use them on the same domain:
cookies = pickle.load(open('cookies.pkl', 'rb'))
for cookie in cookies:
driver.add_cookie(cookie)
But I get the error:
File "test.py", line 115, in user_agent = auth() File "test.py", line 50, in auth driver.add_cookie(cookie) File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 894, in add_cookie self.execute(Command.ADD_COOKIE, {'cookie': cookie_dict}) File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute self.error_handler.check_response(response) File "C:\Python37\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: invalid 'expiry' (Session info: chrome=78.0.3904.44)
Cookies structure:
>>> cookies = pickle.load(open('cookies.pkl', 'rb'))
>>> for c in cookies:
... c
...
{'domain': '.linkedin.com', 'expiry': 1633780372, 'httpOnly': False, 'name': '***********', 'path': '/', 'secure': False, 'value': '*************'}
...
Upvotes: 2
Views: 1463
Reputation: 956
The problem is that cookies, for some reason, are written with the wrong name. Solved it like this:
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'))
Upvotes: 2