kshnkvn
kshnkvn

Reputation: 956

Why I can't upload cookies to Selenium?

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

Answers (1)

kshnkvn
kshnkvn

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

Related Questions