Selenium操作Cookie全攻略:从入门到实战,测试工程师必会技能!

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


一、Cookie基础:3分钟快速理解

1. Cookie是什么?
  • 服务器存储在浏览器的小型文本数据(通常<4KB)

  • 核心作用:记录用户身份(如Session ID)、个性化设置(如语言偏好)

2. Cookie的关键属性

属性名

示例值

说明

name

"session_id"

Cookie名称(必填)

value

"a1b2c3d4e5"

Cookie值(必填)

domain

".example.com"

生效域名

path

"/admin"

生效路径

expiry

1735689600

过期时间(Unix时间戳)

httpOnly

true

是否仅允许HTTP访问(防XSS)

secure

true

是否仅通过HTTPS传输

二、Selenium操作Cookie的4大核心API

1. 获取Cookie
  • 方法driver.get_cookies()

  • 作用:获取当前域名下所有Cookie(返回字典列表)

# Python示例  
all_cookies = driver.get_cookies()  
print(all_cookies)  
# 输出:[{'name': 'session', 'value': 'abc123', ...}, ...]  

// Java示例  
Set<Cookie> allCookies = driver.manage().getCookies();  
System.out.println(allCookies);  
2. 获取指定Cookie
  • 方法driver.get_cookie(name)

  • 作用:按名称查找单个Cookie

# Python示例  
session_cookie = driver.get_cookie("session_id")  
print(session_cookie['value'])  # 输出:a1b2c3d4e5  

// Java示例  
Cookie sessionCookie = driver.manage().getCookieNamed("session_id");  
System.out.println(sessionCookie.getValue());  
3. 添加Cookie
  • 方法driver.add_cookie(cookie_dict)

  • 关键点必须先访问域名才能设置其Cookie!

# Python示例  
driver.get("https://example.com")  # 先访问域名  
cookie = {  
'name': 'preferred_lang',  
'value': 'zh-CN',  
'domain': 'example.com'
}  
driver.add_cookie(cookie)  

// Java示例  
driver.get("https://example.com");  
Cookie langCookie = new Cookie("preferred_lang", "zh-CN", "example.com", "/", null);  
driver.manage().addCookie(langCookie);  
4. 删除Cookie
  • 删除单个driver.delete_cookie(name)

  • 清空所有driver.delete_all_cookies()

# Python示例  
driver.delete_cookie("old_session")  # 删除单个  
driver.delete_all_cookies()           # 清空所有  

// Java示例  
driver.manage().deleteCookieNamed("old_session");  
driver.manage().deleteAllCookies();  

三、5大实战场景:Cookie操作解决测试痛点

场景1:跳过登录保持会话状态
# Step1: 手动登录后获取Cookie  
driver.get("https://your-app.com/login")  
# ...(执行登录操作)  
session_cookie = driver.get_cookie("session_id")  

# Step2: 新会话注入Cookie跳过登录  
driver = webdriver.Chrome()  
driver.get("https://your-app.com")  # 必须先访问域名  
driver.add_cookie(session_cookie)  
driver.refresh()  # 刷新页面生效  
# 此时应处于登录状态!   
场景2:测试多用户身份切换​​​​​​​
// Java示例:快速切换管理员/普通用户  
publicvoidswitchUser(String userType) {  
    driver.manage().deleteAllCookies();  
Cookie userCookie;  
if ("admin".equals(userType)) {  
        userCookie = newCookie("role", "admin", "app.com", "/", null);  
    } else {  
        userCookie = newCookie("role", "user", "app.com", "/", null);  
    }  
    driver.manage().addCookie(userCookie);  
    driver.navigate().refresh();  
}  
场景3:模拟登录过期测试​​​​​​​
# 修改Cookie过期时间为过去时间  
expired_cookie = {  
'name': 'session',  
'value': 'expired_token',  
'domain': 'app.com',  
'expiry': 1609459200# 2021-01-01的时间戳  
}  
driver.add_cookie(expired_cookie)  
driver.refresh()  
# 验证是否跳转到登录页  
assert"Login"in driver.title  
场景4:跨子域名共享Cookie​​​​​​​
# 设置domain为顶级域名  
cookie = {  
'name': 'company_id',  
'value': '123',  
'domain': '.example.com',  # 注意开头的点!  
'path': '/'
}  
driver.add_cookie(cookie)  

# 访问子域名验证  
driver.get("https://shop.example.com")  
assert driver.get_cookie("company_id") isnotNone
场景5:绕过验证码测试​​​​​​​
// 开发环境设置测试专用Cookie  
Cookie bypassCookie = new Cookie("disable_captcha", "true", "test-env.com", "/", null);  
driver.manage().addCookie(bypassCookie);  
driver.get("https://test-env.com/login");  
// 此时登录将跳过验证码检查  

四、3个避坑指南:Cookie操作常见错误

  1. 错误:未访问域名直接添加Cookie
    现象InvalidCookieDomainException
    解决:先driver.get(domain_url)再添加

  2. 错误:跨域名操作Cookie
    现象:Cookie添加失败
    规则:Selenium只能操作当前域名的Cookie

  3. 错误:忽略HTTPOnly限制
    现象:无法通过JS操作HTTPOnly Cookie
    解决:Selenium不受此限制,可直接操作

五、高级技巧:Cookie与测试框架整合

1. 封装Cookie工具类​​​​​​​
classCookieManager:  
    @staticmethod  
defsave_cookies(driver, file_path):  
withopen(file_path, 'wb') as f:  
            pickle.dump(driver.get_cookies(), f)  

    @staticmethod  
defload_cookies(driver, file_path):  
        driver.get("https://example.com")  # 必须访问域名  
withopen(file_path, 'rb') as f:  
            cookies = pickle.load(f)  
for cookie in cookies:  
                driver.add_cookie(cookie)  
        driver.refresh()  
2. 集成Pytest实现登录复用​​​​​​​
import pytest  

@pytest.fixture(scope="session")  
defauto_login(driver):  
    driver.get(LOGIN_URL)  
# ... 登录操作  
return driver  

# 所有测试用例自动携带登录态  
deftest_profile_page(auto_login):  
    auto_login.get(PROFILE_URL)  
assert"User Profile"in auto_login.title  

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值