📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
一、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操作常见错误
-
错误:未访问域名直接添加Cookie
现象:InvalidCookieDomainException
解决:先driver.get(domain_url)
再添加 -
错误:跨域名操作Cookie
现象:Cookie添加失败
规则:Selenium只能操作当前域名的Cookie -
错误:忽略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%免费】