【问题标题】:Why I can't upload cookies to Selenium?为什么我不能将 cookie 上传到 Selenium?
【发布时间】:2020-02-06 18:20:17
【问题描述】:

我这样保存 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() 文件“test.py”,第 50 行,在 auth driver.add_cookie(cookie) 文件 "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 894 行,在 add_cookie 中 self.execute(Command.ADD_COOKIE, {'cookie': cookie_dict}) 文件 "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 321 行,在执行中 self.error_handler.check_response(response) 文件 "C:\Python37\lib\site-packages\selenium\webdriver\remote\errorhandler.py", 第 242 行,在 check_response 中 raise exception_class(message, screen, stacktrace) selenium.common.exceptions.InvalidArgumentException: Message: invalid 参数:无效的“到期”(会话信息: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': '*************'}
...

【问题讨论】:

    标签: python-3.x selenium cookies


    【解决方案1】:

    问题在于,出于某种原因,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'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2015-11-28
      • 1970-01-01
      相关资源
      最近更新 更多