JMeter正则表达式提取HTTP请求返回的challenger_step_id值失败求助
解决JMeter正则表达式提取challenger_step_id值的问题
我来帮你搞定这个正则提取的困扰!其实不是--字符的问题,是你的正则表达式没有正确匹配响应里的实际HTML结构,咱们一步步来修正:
问题分析
你提供的响应里,challenger_step_id对应的标签是:
<input id="challenger_step_id" name="challenger[step_id]" type="hidden" value="cEVWeUZHc3ZnSGR6dlhrSnRhd3ZLdz09LS1rOTlFS0crYitObmFMT0pOcXJ2MVZBPT0=--2baa3ff87227212cff656c4db1040680ff78ff3f" />
你之前写的正则里包含/><input id这类内容,这是把HTML转义实体(比如>对应>)当成了实际响应字符,但JMeter获取到的是原始HTML(直接带<、>、"),所以自然匹配不到。
正确的正则表达式
推荐用更精准且鲁棒的正则:
id="challenger_step_id"[^>]+value="([^"]+)"
正则说明:
id="challenger_step_id":精准定位到目标input标签[^>]+:匹配标签内除了>之外的所有内容(也就是中间的其他属性)value="([^"]+)":匹配value属性的值,[^"]+表示匹配到下一个双引号为止,完美覆盖包含--的内容
JMeter配置步骤
- 在目标HTTP请求下方添加正则表达式提取器
- 填写以下参数:
- 引用名称:比如
step_id(后续可以用${step_id}引用这个值) - 正则表达式:粘贴上面的
id="challenger_step_id"[^>]+value="([^"]+)" - 模板:
$1$(表示提取第一个分组的内容) - 匹配数字:
1(取第一个匹配结果) - 缺省值:可以填
STEP_ID_NOT_FOUND(方便调试时判断是否提取成功)
- 引用名称:比如
测试验证
你可以在JMeter的结果树里打开正则表达式测试器,把响应内容粘贴进去,输入新的正则,就能看到成功提取到目标value值啦!
内容的提问来源于stack exchange,提问作者Subhojit
相关产品推荐
相关产品推荐

