如何借助While Controller将Regex Extract提取的商品全部加入购物车?
用JMeter While Controller实现批量添加商品到购物车的逻辑
前置条件确认
- 已通过Regex Extract Post Processor提取出商品数组,假设变量名为
productId,对应的商品总数变量为productId_matchNr(值为6)。
实现步骤
1. 初始化计数器变量
添加User Defined Variables元件,定义变量counter,值设为1(JMeter正则提取的数组下标从1开始)。
2. 配置While Controller的循环条件
添加While Controller,在条件输入框中填入:
${__jexl3(${counter} <= ${productId_matchNr},)}
该表达式会判断当前计数器是否小于等于商品总数,满足条件则继续循环。
3. 编写加入购物车的事务逻辑
在While Controller下添加你的“加入购物车”事务(比如HTTP请求、事务控制器等):
- 在购物车请求中,引用当前要添加的商品ID:使用
${productId_${counter}},这个变量会动态获取第counter个商品的ID。 - 添加JSR223 Sampler放在购物车请求之后,用来递增计数器,脚本内容:
def currentCount = Integer.parseInt(vars.get("counter")) vars.put("counter", String.valueOf(currentCount + 1))
每次执行完购物车请求后,计数器加1,直到计数器超过productId_matchNr时,While Controller自动停止循环。
关键说明
- 确保正则提取的变量名和你实际使用的一致,比如如果正则提取的变量是
itemId,需对应改成itemId_${counter}和itemId_matchNr。 - 若不想用JSR223 Sampler,也可以用Counter元件替代:设置起始值1、递增步长1,引用变量名保持为
counter即可。
内容的提问来源于stack exchange,提问作者venkateh69
相关产品推荐
相关产品推荐

