Cookie 增 / 删 / 查 交互式面板
Cookie = HTTP 无状态的补位方案(服务器给浏览器发的"身份证"),自动化测试中通过 get_cookies() / add_cookie() 实现登录保持、跳过登录页
add_cookie() · get_cookies() · get_cookie(n) · delete_cookie(n) · delete_all_cookies()add_cookie() 前必须先 driver.get("https://目标域名"),否则抛 InvalidCookieDomainException
add_cookie 添加 · get_cookies / get_cookie 读取 · delete_cookie / delete_all_cookies 删除。
dict,完整 7 个关键字段如下:
⚠️ 必须先 driver.get("https://目标域名") 再 add_cookie —— Cookie 只属于当前域名
| API | 返回类型 | 找不到时 |
|---|---|---|
| get_cookies() | list[dict] | 返回 [](空列表) |
| get_cookie("name") | dict | 返回 None(不抛异常) |
# Cookie 增删改查全套
# ⚠️ 注意:add_cookie 前 driver 必须先 get() 到目标域名
# ① 添加 —— 完整 dict 字段
driver.add_cookie({
"name": "token",
"value": "abc123",
"path": "/",
"domain": ".example.com",
"expiry": 1735689600, # Unix 时间戳,过期时间
"secure": True, # 仅 HTTPS 发送
"httpOnly": False # 禁止 JS 读取(防 XSS)
})
# ② 读取
all_cookies = driver.get_cookies() # list[dict]
print(f"共 {len(all_cookies)} 条 Cookie")
for c in all_cookies:
print(c["name"], "=", c["value"], "| domain:", c.get("domain"))
token = driver.get_cookie("token") # dict 或 None
if token:
print("token 存在:", token["value"])
else:
print("token 不存在")
# ③ 删除
driver.delete_cookie("token") # 删一条
driver.delete_all_cookies() # 全删
# ✅ 登录状态保持实战:Cookie → JSON → 重新注入
import json, os
COOKIE_FILE = "cookies.json"
# 登录后保存
cookies = driver.get_cookies()
with open(COOKIE_FILE, "w") as f:
json.dump(cookies, f, indent=2)
# 下次启动新浏览器 → 跳过登录
driver.get("https://www.example.com") # ⚠️ 必须先 visit 域名
with open(COOKIE_FILE, "r") as f:
saved = json.load(f)
for c in saved:
driver.add_cookie(c) # 逐条还原
driver.refresh() # Cookie 生效,已登录
get_cookies() → 打印并数出有多少条 Cookie,每条的 domain / path / secure / httpOnly 分别是什么{"name":"my_test","value":"hello123"} → 刷新页面 → 用 get_cookie("my_test") 验证它还在吗?为什么 add_cookie 之前必须先 get()?get_cookies()(全量列表)和 get_cookie("某个名字")(单个 dict)的返回值,分别打印它们的 type 和内容get_cookies() 打印 → 删其中 1 条 → 再打印 → 验证条数变化get_cookies() 保存到 JSON 文件 → 下次启动新浏览器 → 读 JSON → driver.get(域名) → add_cookie() 逐条还原 → 刷新页面验证已登录driver.get("https://目标域名"),否则 selenium.common.exceptions.InvalidCookieDomainException