Cookie 增 / 删 / 查 交互式面板
演示 Selenium 的 Cookie 增删改查 四个核心操作。本页下方有交互式面板,可以动手添加、读取、删除 Cookie,实时看到变化。
🖐️ 动手试试(3 步走完整个 增删改查):
name=user_id、value=12345,点"添加 Cookie" → 卡片列表出现新项 ✅99999 → 原来的被覆盖(Selenium 没有单独的 update,改就是 delete + add)🤔 思考一下:为什么必须先 get 域名才能 add_cookie?如果直接对空的 driver 调 add_cookie 会报什么错?(提示:Selenium 不允许跨域操作 Cookie)
⚠️ 前提:必须先 driver.get(域名) 才能操作该域名 Cookie!Selenium 不允许跨域操作 Cookie。
7 个 Cookie 字段:
name / value → 必填,Cookie 的 key-valuepath → 默认 /,限定哪些路径下浏览器会自动带这个 Cookiedomain → 一般不用写,Selenium 自动设为当前域名expiry → Unix 时间戳(秒),到期自动删除secure → True 则只有 HTTPS 请求才会带httpOnly → True 则 JS document.cookie 读不到,防 XSSadd_cookie / get_cookie / get_cookies / delete_cookie / delete_all_cookies
# 快速参考 driver.add_cookie({"name": "role", "value": "admin"}) ck = driver.get_cookie("role") assert ck["value"] == "admin" driver.delete_cookie("role") driver.delete_all_cookies() assert driver.get_cookies() == []
get() 访问目标域,再用 add_cookie() 依次添加 username=tester_01、role=admin、theme=dark,断言面板 Cookie 总数为 3get_cookie("role") 读取单条并断言 value == "admin";get_cookies() 获取全部并遍历打印delete_cookie("theme") 删除单条并验证;delete_all_cookies() 清空全部,最终断言 get_cookies() 返回空列表
操作步骤:
① 使用 driver.add_cookie() 添加至少 3 个 Cookie(如 username=tester_01、role=admin、theme=dark),断言列表面板中出现对应项,且「Cookie 总数」= 3。
② 使用 driver.get_cookie("role") 读取单个 Cookie,断言 value == "admin";再用 get_cookies() 获取全部并遍历打印。
③ 用 delete_cookie("theme") 删除单个,再 delete_all_cookies() 全部清除,最终断言 get_cookies() 返回空列表。
# 练习 7 参考答案 import time from selenium.webdriver.common.by import By # 1. 先刷新一次页面(Cookie 操作前最好先访问该域) driver.get("file:///f:/autotest_project/browser_op_practice.html") # 2. add_cookie 添加 3 个(注意 Selenium add_cookie 的字典格式) driver.add_cookie({"name": "username", "value": "tester_01"}) driver.add_cookie({"name": "role", "value": "admin"}) driver.add_cookie({"name": "theme", "value": "dark"}) # 刷新页面让面板同步显示 Cookie driver.refresh() time.sleep(0.5) total_text = driver.find_element(By.ID, "cookie_total").text print(f"面板显示:{total_text}") assert "3" in total_text # 3. get_cookie 读取单个 ck_role = driver.get_cookie("role") print(f"role cookie = {ck_role}") assert ck_role is not None assert ck_role["value"] == "admin" # 4. get_cookies 遍历全部 all_cks = driver.get_cookies() print(f"共 {len(all_cks)} 个 Cookie:") for c in all_cks: print(f" {c['name']} = {c['value']}") assert len(all_cks) >= 3 # 5. delete_cookie 删除单个 driver.delete_cookie("theme") assert driver.get_cookie("theme") is None # 6. delete_all_cookies 全部清除 driver.delete_all_cookies() assert driver.get_cookies() == []