如何在Robot Framework+Selenium中复用浏览器会话及Cookie跨用例管理
一、核心实现思路
- 登录成功后将浏览器Cookie序列化保存到JSON文件,后续测试用例从文件读取并加载到浏览器
- 登录凭证以字典形式存储到文件,通过资源文件的统一关键字加载为全局变量,实现跨文件复用
二、分文件代码实现
1. Resources/Resources.robot(通用资源与关键字)
*** Settings *** Library SeleniumLibrary Library OperatingSystem *** Variables *** # 定义凭证和Cookie的存储路径 ${CREDENTIALS_FILE} ${CURDIR}/credentials.json ${COOKIES_FILE} ${CURDIR}/cookies.json *** Keywords *** Save Login Cookies [Documentation] 获取当前浏览器Cookie并保存到JSON文件 ${cookies} SeleniumLibrary.Get Cookies ${cookies_json} Convert To JSON ${cookies} OperatingSystem.Create File ${COOKIES_FILE} ${cookies_json} overwrite=True Load Login Cookies [Documentation] 从JSON文件加载Cookie并添加到浏览器 ${cookies_json} OperatingSystem.Get File ${COOKIES_FILE} ${cookies} Convert From JSON ${cookies_json} :FOR ${cookie} IN @{cookies} \ SeleniumLibrary.Add Cookie ${cookie} # 刷新页面使Cookie生效 SeleniumLibrary.Refresh Page Save Credentials [Documentation] 首次运行时执行,保存登录凭证到文件 ${credentials} Create Dictionary username=你的账号 password=你的密码 ${credentials_json} Convert To JSON ${credentials} OperatingSystem.Create File ${CREDENTIALS_FILE} ${credentials_json} overwrite=True Load Credentials [Documentation] 加载凭证并设置为全局套件变量 ${credentials_json} OperatingSystem.Get File ${CREDENTIALS_FILE} ${credentials} Convert From JSON ${credentials_json} Set Suite Variable ${GLOBAL_USER} ${credentials}[username] Set Suite Variable ${GLOBAL_PWD} ${credentials}[password]
2. ABC_ACM_TC/ABC_Login.robot(登录测试用例)
*** Settings *** Resource ../Resources/Resources.robot Suite Setup SeleniumLibrary.Open Browser https://你的应用登录地址 chrome Suite Teardown SeleniumLibrary.Close Browser *** Test Cases *** 完成登录并保存Cookie [Documentation] 执行登录流程,验证成功后保存Cookie # 首次运行请先执行Save Credentials生成凭证文件,之后可注释 # Save Credentials Load Credentials # 登录操作(替换为实际页面元素定位器) SeleniumLibrary.Input Text id=username ${GLOBAL_USER} SeleniumLibrary.Input Text id=password ${GLOBAL_PWD} SeleniumLibrary.Click Button id=login-btn # 验证登录成功 SeleniumLibrary.Page Should Contain 欢迎回来 # 保存Cookie到文件 Save Login Cookies
3. ABC_ACM_TC/Setting.robot(设置模块测试用例)
*** Settings *** Resource ../Resources/Resources.robot Suite Setup 初始化浏览器并加载Cookie *** Keywords *** 初始化浏览器并加载Cookie SeleniumLibrary.Open Browser https://你的应用主页地址 chrome Load Login Cookies # 验证已自动登录 SeleniumLibrary.Page Should Contain 欢迎回来 *** Test Cases *** 修改应用基础设置 [Documentation] 无需重新登录,直接测试设置模块 # 进入设置页面(替换为实际元素定位器) SeleniumLibrary.Click Link id=settings-menu # 修改设置项 SeleniumLibrary.Input Text id=config-value 新配置内容 SeleniumLibrary.Click Button id=save-btn # 验证修改成功 SeleniumLibrary.Page Should Contain 设置已保存
4. ABC_ACM_TC/TestSuite.robot(测试套件执行)
*** Settings *** Test Case Order sequential # 强制登录用例优先执行 *** Test Cases *** 执行登录测试 [Documentation] 生成并保存Cookie Run Test Case ABC_Login.robot 完成登录并保存Cookie 执行设置模块测试 [Documentation] 使用已保存的Cookie执行测试 Run Test Case Setting.robot 修改应用基础设置
三、关键注意事项
- 首次运行时必须先执行
Save Credentials生成凭证文件,之后可注释该步骤 - 所有页面元素定位器(id、xpath等)需替换为你应用的实际元素
- Cookie有效期由应用后端设置,过期后需重新执行登录用例更新Cookie
- 若使用非Chrome浏览器,需调整
Open Browser的浏览器参数
内容的提问来源于stack exchange,提问作者shashi_user
相关产品推荐
相关产品推荐

