Jmeter通过cookie模拟登陆

本文介绍如何使用JMeter进行模拟登录,包括通过全局变量和内置Cookie存储两种方法。详细讲解了正则表达式提取器的使用,以及如何设置JMeter属性来存储和读取Cookie,实现跨线程的身份验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础知识:
BeanShell PostProcessor 执行脚本
vars变量是存储当前线程的数据,注意这个是Jmeter提供好的对象,仅当前线程内有效 .
vars存储vars.put(“COOKIES_TEST”, str.substring(0, str.length() - 1));
vars取值String strData=vars.get(“ckid”);
${__setProperty(newtest,${ckid})};是用来设置全局变量的方式,这个方法是可以跨线程有效。
取值方式是 ${__property(newtest,)}。
为了存储cookie需要在jmeter配置文件中设置存储cookie为允许
CookieManager.save.cookies=true

方式1.通过全局变量模拟登陆。

第一步:需要从模拟登陆的接口中获取相应的身份验证信息。
先增加一个正则表达式提取器,用于模拟登陆的接口请求成功后从接口信息中提取身份信息。

在这里插入图片描述
在这里插入图片描述

以上步骤就能将信息添加到了Jmeter的变量中。

第二步:添加线程内的ckid变量为全局变量
增加后置脚本
在这里插入图片描述
内容为
${__setProperty(newtest,${ckid})};这时候全局变量中就有了一个名为newtest的变量。其他线程就可以从中取出之前存储的jsessionId了。${ckid}为正则表达式提取出的数据。

第三步:正式请求要测试的接口,通过用户身份信息验证。
可以单独增加一个线程也可以在当前线程中继续添加。
前提是要增加一个cookie管理器取出全局的变量当作用户登陆的信息。
在这里插入图片描述
之后就正常设置接口的请求信息即可,这时已经能模拟登陆了。

方式2.通过jmeter内置的cookie存储模拟登陆。

需要找到对应的jmeter.properties配置文件增加CookieManager.save.cookies=true配置。让jmeter能自动存储cookie数据。jmeter存储cookie的形式是cookie_加上真正的cookie名称,这是默认的前缀,也可以通过jmeter.properties文件修改。

此方法相对简单,但也需要分析实际的cookie存储形式。比如模拟登陆的cookie信息是JSESSIONID=1234435.
这时候存储的就是COOKIE_JSESSIONID,Jmeter取出后就是1234435.
这种操作方法的话仅在当前线程有效,所以需要把模拟登陆和实际接口放在一个线程中。实际操作截图
在这里插入图片描述

### 如何在 JMeter 中配置和设置 Cookie #### 创建测试计划并添加线程组 为了确保 JMeter 能够处理需要用户登录的电子商务网站,首先需打开 JMeter 并创建新的测试计划。接着,在此测试计划下通过右键菜单选择 `添加 -> 线程(用户) -> 线程组` 来增加线程组,并适当调整其参数比如线程数量以及循环次数等[^1]。 #### 添加 HTTP Cookie 管理器 紧接着在线程组之下继续利用右键选项来加入 `配置元件 -> HTTP Cookie 管理器`。对于大多数情况,默认设定已经足够满足需求;然而针对某些特定场景,则可能需要进一步自定义配置以适应应用的要求,特别是当涉及到基于 session ID 的 cookie 校验时[^3]。 #### 获取并手动输入 Cookies 如果应用程序依赖于特定 cookies 或者 session IDs 进行身份验证或其他功能实现的话,可以通过诸如 Fiddler 工具捕获网络流量从而得到所需的 cookie 数据。之后再把这些信息手工录入到之前建立好的 HTTP Cookie 管理器当中去。 #### 测试用例中的实际运用 最后一步就是在具体的 HTTP 请求中使用这些已配置好的 cookies 。这通常意味着只需正常构建你的采样器 (Sampler),而无需额外指定任何关于 cookies 的细节 —— 因为这一切都已经由前面提到过的 HTTP Cookie Manager 处理好了[^2]。 ```python # Python 示例仅用于说明逻辑流程而非真实代码执行 def setup_jmeter_cookie(): create_test_plan() add_thread_group(users=50, loops=1) configure_http_cookie_manager(default=True) setup_jmeter_cookie() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值