在 Web 自动化测试过程中,登录步骤往往是最麻烦、最耗时的。比如验证码、滑块、短信登录等等,都不适合直接写到自动化测试脚本里。
这时候,我们就可以使用 绕过登录,直接复用 Cookie 的方式,既能保证测试流程完整,又能大幅提升执行效率。
本文将以 Selenium + Python为例,实现绕过登录获取 Cookie。
一、为什么要绕过登录?
1. 登录操作繁琐:很多系统登录需要验证码/二次验证,自动化很难处理。
2. 提高运行效率:跳过登录步骤,直接进入系统核心功能,执行速度更快。
3. 便于调试和回归测试:专注于业务逻辑,而不是重复登录。
二、实现思路
1. 第一次人工登录,并用 Selenium 把当前页面的 Cookie 保存到 `cookies.json` 文件。
2. 后续测试直接读取 Cookie 文件,在打开浏览器后注入到会话中,实现绕过登录。
三、环境准备
Python 3.x
Selenium 库
安装依赖:
bash
pip install selenium
四、代码实现
第一次人工登录后,运行下面的脚本:
import json
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome()
driver.get("http://your-crm-login-page.com")
# 手动登录(这里等你手动输入用户名密码 + 验证码)
input("请完成登录后按回车继续...")
# 获取 cookie 并保存
cookies = driver.get_cookies()
with open("cookies.json", "w", encoding="utf-8") as f:
json.dump(cookies, f)
print("登录成功,cookies 已保存到 cookies.json")
driver.quit()
运行后,你会在项目目录下得到一个 cookies.json
文件,内容大概如下:
[
{
"domain": "your-crm-login-page.com",
"httpOnly": false,
"name": "SESSIONID",
"path": "/",
"secure": false,
"value": "abc123xyz"
}
]
2. 复用 Cookie 直接登录
在后续测试用例中,直接注入 Cookie:
import json
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://your-crm-login-page.com")
# 加载 cookies.json
with open("cookies.json", "r", encoding="utf-8") as f:
cookies = json.load(f)
for cookie in cookies:
driver.add_cookie(cookie)
# 刷新页面即可跳过登录
driver.refresh()
print(" 已绕过登录,直接进入系统")