文章目录
- (一)窗口截图
 - (二)验证码
 - 
- 一、验证码的处理方式:
 - 二、cookie
 - 
- [1. Cookie 核心概念](#1. Cookie 核心概念)
 - 
- [1.1 生成机制](#1.1 生成机制)
 - [1.2 核心作用](#1.2 核心作用)
 - [1.3 浏览器行为](#1.3 浏览器行为)
 
 - [2. Selenium 中 Cookie 操作应用](#2. Selenium 中 Cookie 操作应用)
 - 
- [1.1 核心 API 方法](#1.1 核心 API 方法)
 
 - [2.2 实操步骤(以百度登录状态为例)](#2.2 实操步骤(以百度登录状态为例))
 - [3. 常见场景扩展](#3. 常见场景扩展)
 - [4. 总结](#4. 总结)
 
 
 
(一)窗口截图
把当前操作的页面,截图保存到指定位置。
driver.get_screenshot_as_file(imgpath)
应用场景:失败截图,让错误看的更直观
方法: 
	driver.get_screenshot_as_file(imgepath)
参数:
	imagepath:为图片要保存的目录地址及文件名称
		如: 当前目录 ./test.png
			 上一级目录 ../test.png
扩展:
	1. 多条用例执行失败,会产生多张图片,可以采用时间戳的形式,进去区分。
	操作: 
		driver.get_screenshot_as_file("../image/%s.png"%(time.strftime("%Y_%m_%d %H_%M_%S")))
		strftime:将时间转为字符串函数
注意:
	%Y_%m_%d %H_%M_%S:代表,年 月 日 时 分 秒
        (二)验证码
一种随机生成是信息(数字、字母、汉字、图片、算术题)等为了防止恶意的请求行为,增加应用的安全性。
一、验证码的处理方式:
① 去掉验证码(测试环境下)
② 设置万能验证码(生产环境和测试环境下)
③ 验证码识别技术(Python-tesseract)
④ 记录 cookie(通过记录cookie进行跳过登录)
二、cookie
1. Cookie 核心概念
1.1 生成机制
Cookie 由服务器端生成,当浏览器首次向服务器发送请求时,服务器会在响应中携带 Cookie 信息返回给浏览器。
1.2 核心作用
- 标识用户会话状态(最典型场景:登录状态保持)
 - 存储用户偏好设置、浏览记录等临时数据
 - 实现"免重复登录""记住我"等功能
 
1.3 浏览器行为
浏览器会自动保存 Cookie(按域名隔离存储),后续向同一服务器发送请求时,会自动将对应 Cookie 附加到请求头中,无需手动干预。
2. Selenium 中 Cookie 操作应用
1.1 核心 API 方法
| 方法 | 功能描述 | 返回值/参数要求 | 
|---|---|---|
driver.get_cookies() | 
获取当前页面所属域名下的所有 Cookie | 返回列表,每个元素是 Cookie 字典(含 name、value 等字段) | 
driver.add_cookie(cookie_dict) | 
向当前浏览器添加 Cookie | 参数为字典,必须包含 name(Cookie 名称)和 value(Cookie 值),可选字段:domain(域名)、path(路径)等 | 
2.2 实操步骤(以百度登录状态为例)
步骤说明
- 打开目标网站(确保 Cookie 对应的域名与当前页面域名一致)
 - 添加已获取的有效 Cookie(如百度 BDUSS,用于保持登录状态)
 - 暂停等待 Cookie 生效(建议 2 秒以上)
 - 刷新页面,验证 Cookie 效果
 
完整代码示例
            
            
              python
              
              
            
          
          from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time
# 1. 初始化浏览器(Chrome 为例,自动管理驱动)
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
try:
    # 2. 打开百度首页(必须先访问目标域名,否则 Cookie 无法添加)
    driver.get("http://www.baidu.com")
    print("首次打开百度,未登录状态")
    time.sleep(1)  # 等待页面加载
    # 3. 添加百度登录状态 Cookie(BDUSS 需替换为自己的有效值)
    # 如何获取 BDUSS?:浏览器F12 → Application → Cookies → www.baidu.com → 复制 BDUSS 的 value
    baidu_cookie = {
        "name": "BDUSS",  # Cookie 名称(百度固定为 BDUSS)
        "value": "你的实际 BDUSS 值",  # 关键!替换为自己的有效 BDUSS
        "domain": ".baidu.com",  # 可选:指定域名(百度Cookie 支持所有子域名,前缀加.)
        "path": "/",  # 可选:Cookie 生效路径(根路径表示全站生效)
        "httpOnly": False,  # 可选:是否仅 HTTP 请求可访问
        "secure": False  # 可选:是否仅 HTTPS 生效(百度 HTTP 可访问)
    }
    driver.add_cookie(baidu_cookie)
    print("已添加 BDUSS Cookie")
    # 4. 暂停 2 秒以上,确保 Cookie 写入生效
    time.sleep(3)
    # 5. 刷新页面,验证登录状态
    driver.refresh()
    print("页面已刷新,可观察是否已登录百度")
    # (可选)获取当前所有 Cookie,验证是否添加成功
    all_cookies = driver.get_cookies()
    print("\n当前页面所有 Cookie:")
    for cookie in all_cookies:
        if cookie["name"] == "BDUSS":
            print(f"BDUSS 验证成功:{cookie['value'][:20]}...")  # 只打印前20位,避免敏感信息泄露
    # 保持浏览器打开,便于观察效果(手动关闭)
    input("按回车键关闭浏览器...")
finally:
    # 关闭浏览器,释放资源
    driver.quit()
        2.3 关键注意事项
- 
域名一致性要求
- 添加 Cookie 前,必须先通过 
driver.get()访问 Cookie 对应的域名(如百度.baidu.com),否则 Selenium 会报错(跨域 Cookie 无法添加)。 - 不同网站的 Cookie 名称和格式不同(如淘宝的登录 Cookie 不是 BDUSS),需自行通过浏览器开发者工具查询。
 
 - 添加 Cookie 前,必须先通过 
 - 
BDUSS 有效性
- BDUSS 是百度用户的登录凭证,具有时效性(过期后失效),需从自己登录百度后的浏览器中获取最新值。
 - 获取方式:浏览器打开百度 → 按 F12 打开开发者工具 → 切换到 Application 标签 → 左侧 Cookies → 选择 
www.baidu.com→ 找到 BDUSS 并复制其 Value。 
 - 
必须刷新页面
- 添加 Cookie 后,页面不会自动生效,需通过 
driver.refresh()刷新,让浏览器重新加载页面并使用新添加的 Cookie。 
 - 添加 Cookie 后,页面不会自动生效,需通过 
 - 
Cookie 字典格式
name和value是必填字段,其他字段(domain、path 等)可选,但如果服务器对 Cookie 有严格限制(如指定 path 为/user),则需准确填写,否则 Cookie 可能无法生效。
 
3. 常见场景扩展
- 
Cookie 保存与复用
- 
可将登录后的 Cookie 保存到文件(如 JSON),后续测试无需重复登录:
python# 保存 Cookie 到文件 import json with open("baidu_cookies.json", "w") as f: json.dump(driver.get_cookies(), f) # 从文件加载 Cookie with open("baidu_cookies.json", "r") as f: cookies = json.load(f) for cookie in cookies: driver.add_cookie(cookie) 
 - 
 - 
清除 Cookie
- 单个 Cookie:
driver.delete_cookie("BDUSS") - 所有 Cookie:
driver.delete_all_cookies() 
 - 单个 Cookie:
 - 
Cookie 有效期问题
- 若测试中发现 Cookie 失效,需重新获取最新的 Cookie(如重新登录网站后复制 BDUSS)。
 
 
4. 总结
- Cookie 的核心价值是保持会话状态,在自动化测试中可用于跳过登录步骤,提高测试效率。
 - Selenium 操作 Cookie 的核心是 
get_cookies()和add_cookie(),关键要保证域名一致 和刷新页面。 - 不同网站的 Cookie 格式不同,需结合浏览器开发者工具查询具体字段,灵活调整代码。