You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Selenium实现remember me功能的自动化测试用例

如何用Selenium测试"记住我"功能的自动登录场景?

我完全理解你的困扰——很多旧的Selenium方案要么因为浏览器驱动更新失效,要么没考虑到现代网站的登录凭证存储逻辑(比如HttpOnly Cookie、LocalStorage)。下面给你一个基于Selenium 4.x的有效实现,以Python+Chrome为例,完全贴近真实用户的操作流程:

核心思路

"记住我"功能本质是让网站把登录凭证持久化存储在浏览器的用户数据里(Cookie、缓存、LocalStorage等)。所以测试的关键是:让Selenium复用同一个浏览器用户数据目录,这样关闭浏览器再重启时,会自动加载之前保存的登录状态。

具体实现步骤

1. 配置浏览器选项,指定自定义用户数据目录

首先要创建一个本地目录,用来存放Selenium运行时的浏览器用户数据。这样后续重启浏览器时,直接复用这个目录就能读取之前的登录状态:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 创建自定义用户数据目录(比如当前项目下的chrome_profile文件夹)
profile_dir = os.path.join(os.getcwd(), "chrome_profile")
os.makedirs(profile_dir, exist_ok=True)

# 配置Chrome选项
chrome_options = Options()
# 指定用户数据目录
chrome_options.add_argument(f"user-data-dir={profile_dir}")
# 禁用自动关闭浏览器(调试时可选,正式测试可以去掉)
chrome_options.add_experimental_option("detach", False)

2. 第一次登录:勾选"记住我"并完成登录

这一步模拟真实用户的登录流程,确保勾选"记住我"复选框,让网站把登录凭证存在我们指定的目录里:

# 初始化浏览器,使用自定义配置
driver = webdriver.Chrome(options=chrome_options)
driver.maximize_window()

# 打开登录页面
driver.get("你的登录页面URL")

# 输入用户名和密码(替换成你页面实际的元素定位器,比如id、xpath)
username_input = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located(("id", "username"))
)
password_input = driver.find_element("id", "password")
username_input.send_keys("你的测试用户名")
password_input.send_keys("你的测试密码")

# 勾选"记住我"复选框
remember_me = driver.find_element("id", "remember-me")
if not remember_me.is_selected():
    remember_me.click()

# 点击登录按钮
login_btn = driver.find_element("id", "login-submit")
login_btn.click()

# 等待跳转到仪表盘,验证登录成功(用显式等待替代sleep更可靠)
WebDriverWait(driver, 10).until(
    EC.title_contains("仪表盘")
)
print("第一次登录成功,已进入仪表盘")

# 关闭浏览器
driver.quit()

3. 重启浏览器,验证自动登录

现在复用同一个用户数据目录启动浏览器,直接访问网站首页,检查是否自动跳转到仪表盘:

# 再次初始化浏览器,使用同一个用户数据目录
driver = webdriver.Chrome(options=chrome_options)
driver.maximize_window()

# 打开网站首页(或直接打开登录页,看是否自动跳转)
driver.get("你的网站首页URL")

# 验证是否自动登录到仪表盘
try:
    WebDriverWait(driver, 10).until(
        EC.title_contains("仪表盘")
    )
    print("重启浏览器后自动登录成功,已进入仪表盘")
except:
    print("自动登录失败,请检查元素定位或网站的记住我逻辑")

# 清理资源
driver.quit()

关键注意事项

  • 用显式等待替代sleep:上面的示例用了WebDriverWait,比固定时长的time.sleep()更稳定,能适应不同的网络加载速度。
  • 浏览器与驱动版本匹配:一定要保证ChromeDriver和你的Chrome浏览器版本完全一致,否则会出现无法复用用户数据的问题。
  • Firefox的适配:如果用Firefox,需要改用FirefoxProfile来指定数据目录,逻辑类似,只是配置方式不同。
  • 避免无痕模式:不要在浏览器选项里启用无痕/隐私模式,否则用户数据不会被持久化存储。

为什么旧方案失效?

很多旧方案试图手动保存和加载Cookie,但现代网站常用HttpOnly Cookie或者基于LocalStorage的登录Token,手动操作Cookie无法覆盖所有场景。而复用浏览器用户数据目录是最贴近真实用户行为的方式,能完整保留所有登录相关的状态信息。

内容的提问来源于stack exchange,提问作者kritika agarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:36:43