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

JMeter Selenium Web Driver Sampler登录登出Cookie传递与会话保持咨询

JMeter 登录/登出会话保持与结果收集问题解答

1. 登出请求跳转回登录页的原因

核心原因是登出请求未携带登录后生成的有效会话Cookie,服务器判定当前请求处于未登录状态,因此重定向到登录页面。常见触发场景:

  • 用Selenium Web Driver Sampler完成登录(会话保存在浏览器实例中),但登出请求用了JMeter的HTTP Request Sampler——两者会话完全隔离,HTTP请求未继承Selenium的Cookie,导致服务器无法识别有效会话。
  • 即使都用Selenium,若登录和登出初始化了不同的浏览器实例(重复创建WDS.browser),也会丢失会话上下文。

2. 获取登录后的Cookie(Selenium场景)

在Selenium Web Driver Sampler的登录操作完成后,通过浏览器Cookie管理API提取会话Cookie,并存入JMeter变量:

// 登录成功后执行此代码
var cookies = WDS.browser.manage().getCookies();
// 遍历找到会话标识Cookie(通常为JSESSIONID、SESSIONID等,需匹配实际系统的Cookie名)
for (var i = 0; i < cookies.size(); i++) {
    var cookie = cookies.get(i);
    if (cookie.getName() === 'JSESSIONID') {
        // 存储Cookie键值对到JMeter变量
        vars.put('SESSION_COOKIE', cookie.getName() + '=' + cookie.getValue());
        // 可选:存储Cookie的域名、路径属性,供后续使用
        vars.put('COOKIE_DOMAIN', cookie.getDomain());
        vars.put('COOKIE_PATH', cookie.getPath());
    }
}

如果用HTTP Request Sampler完成登录,直接启用HTTP Cookie管理器即可自动保存登录后的Cookie,无需手动编码。

3. 传递Cookie保持会话完成登出

分两种场景处理:

场景A:登出用HTTP Request Sampler

  • 方法1:通过HTTP Cookie管理器传递
    在Cookie管理器中添加手动Cookie,名称填会话Cookie名(如JSESSIONID),值引用变量${SESSION_COOKIE},域名和路径分别填入${COOKIE_DOMAIN}和${COOKIE_PATH}。
  • 方法2:自定义请求头传递
    在HTTP Request Sampler的「请求头」中添加Cookie头,值为${SESSION_COOKIE}(多Cookie用分号分隔,例:JSESSIONID=xxx; csrfToken=yyy)。

场景B:登出用Selenium Web Driver Sampler

若登录和登出复用同一个浏览器实例,会话会自动保持,直接执行登出操作即可。若用新浏览器实例,需先导入Cookie恢复会话:

// 初始化浏览器后导入Cookie
var cookie = new org.openqa.selenium.Cookie(
    'JSESSIONID', 
    vars.get('SESSION_COOKIE'), 
    vars.get('COOKIE_DOMAIN'), 
    vars.get('COOKIE_PATH'), 
    null
);
WDS.browser.manage().addCookie(cookie);
// 刷新页面或直接访问登出URL,会话即可生效
WDS.browser.get('你的登出URL');

分别收集登录和登出的测试结果

  1. 事务控制器隔离统计:将登录请求放入「登录事务」控制器,登出请求放入「登出事务」控制器,勾选控制器的Generate parent sample选项——监听器会分别展示两个事务的聚合结果(响应时间、成功率、吞吐量等)。
  2. 断言验证结果有效性:
    • 登录事务:添加响应断言,检查页面是否包含登录成功标识(如用户名、「欢迎回来」文本),或HTTP响应码为200。
    • 登出事务:添加断言检查是否跳转到登录页,或页面包含「已退出登录」类提示文本。
  3. 监听器收集数据:用Summary Report查看两个事务的汇总数据,用View Results Tree查看每个Sampler的请求/响应详情,也可用Simple Data Writer将结果导出为CSV文件,方便后续离线分析。

内容的提问来源于stack exchange,提问作者Prabhakaran D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:07:24