为何无法向Selenium中导入Cookie?expiry参数报错问题
我之前也踩过这个一模一样的坑!你遇到的InvalidArgumentException问题,核心原因是Chrome 78+版本的驱动对Cookie的expiry字段格式有严格要求——你用driver.get_cookies()拿到的expiry是整数类型的Unix时间戳,但add_cookie()方法需要这个值是浮点数,直接传入整数就会触发这个错误。
另外还有个容易忽略的细节:在添加Cookie之前,必须先让浏览器访问目标域名的页面,否则Selenium会拒绝添加跨域Cookie,这也是很多人栽跟头的地方。
修复步骤和代码示例
1. 保存Cookie的代码无需修改
原来的保存逻辑是完全正常的:
if auth_func(): # 认证成功后保存Cookie pickle.dump(driver.get_cookies(), open('cookies.pkl', 'wb'))
2. 修改加载和添加Cookie的逻辑
重点处理expiry字段的类型,同时提前访问目标页面:
# 先访问目标域名的页面(比如LinkedIn主页),确保域名匹配 driver.get("https://www.linkedin.com/") # 加载保存的Cookie cookies = pickle.load(open('cookies.pkl', 'rb')) for cookie in cookies: # 把expiry字段转换为浮点数(如果存在该字段的话) if 'expiry' in cookie: cookie['expiry'] = float(cookie['expiry']) # 添加Cookie到当前会话 driver.add_cookie(cookie) # 刷新页面验证Cookie是否生效 driver.refresh()
为什么这样能解决问题?
- 关于
expiry字段:Chrome驱动在解析Cookie时会严格校验数据类型,整数格式的时间戳会被判定为无效,转换成浮点数后就能被正确识别。 - 提前访问目标页面:Selenium的
add_cookie()方法要求当前会话的域名必须和Cookie的domain字段匹配,提前打开目标网站页面可以避免额外的“invalid domain”错误。
内容的提问来源于stack exchange,提问作者kshnkvn
相关产品推荐
相关产品推荐

