列表格式显示
广告招商中...... 联系方式!
私信 +好友
https://comate.baidu.com/zh/page/ek01p54s6yz
Selenium自动化测试中Cookie的设置与管理
2026-02-12 00:56:25
在Selenium自动化测试中,Cookie的设置与管理是模拟用户登录、维持会话状态的重要技术手段。本文将详细介绍如何通过Selenium的add_cookie()方法实现Cookie的添加、批量操作及常见问题解决。
add_cookie()
driver.add_cookie(cookie_dict) 向当前会话添加Cookie,参数为字典类型,必须包含name和value字段,可选字段包括domain、path、expiry、secure等。
driver.add_cookie(cookie_dict)
name
value
domain
path
expiry
secure
前置条件:调用add_cookie()前,必须先通过driver.get(url)访问目标网页,否则会抛出Unable to set Cookie异常。
driver.get(url)
Unable to set Cookie
Python复制from selenium import webdriverdriver = webdriver.Chrome()driver.get("https://www.example.com") # 必须先访问网页# 添加单个Cookiedriver.add_cookie({ "name": "session_id", "value": "abc123xyz", "domain": ".example.com", # 可选,指定域名 "path": "/", # 可选,指定路径 "secure": False # 可选,是否仅HTTPS传输})# 刷新页面使Cookie生效driver.refresh()print("当前Cookie:", driver.get_cookies())driver.quit()
Python复制from selenium import webdriverimport timedriver = webdriver.Chrome()driver.get("https://www.example.com/login") # 先访问登录页# 模拟手动登录后获取的Cookie(实际需从登录后的会话中提取)cookies = [ {"name": "user_token", "value": "token_value_123"}, {"name": "auth_key", "value": "key_value_456"}]# 清除原有Cookie(可选)driver.delete_all_cookies()# 批量添加Cookiefor cookie in cookies: driver.add_cookie(cookie)# 刷新页面并验证登录状态driver.get("https://www.example.com/dashboard")time.sleep(2) # 等待页面加载print("登录后页面标题:", driver.title)driver.quit()
Cookie的domain字段需与目标网页匹配。例如,domain: ".example.com"适用于www.example.com和api.example.com。若省略domain,Selenium会自动填充当前页面的域名。
domain: ".example.com"
www.example.com
api.example.com
可通过JSON文件实现Cookie的保存与复用:
Python复制import json# 保存Cookiewith open("cookies.json", "w") as f: json.dump(driver.get_cookies(), f)# 加载Cookiewith open("cookies.json", "r") as f: cookies = json.load(f) for cookie in cookies: driver.add_cookie(cookie)
使用浏览器开发者工具(F12 → Application → Cookies)查看目标Cookie的完整属性,确保name、value、domain等参数与Selenium代码一致。
InvalidCookieDomainException
原因:Cookie的domain与当前URL不匹配。解决方案:检查domain字段,或省略该字段让Selenium自动处理。
原因:未调用driver.get(url)访问网页,或URL协议(HTTP/HTTPS)与Cookie的secure属性冲突。解决方案:确保先访问网页,并检查secure字段是否与URL协议一致。
本页Html网址:/htmlsoft/619593.html
本页aspx网址:/soft.aspx?id=619593&bianhao=202604031809236361_24516&kind1=&kind2=
最后访问时间:
上一篇:python自动化控制AdsPower生成的指纹浏览器
下一篇:selenium 鼠标操作
增加