Jmeter关联,正则表达式提取器使用

本文介绍如何使用JMeter的正则表达式提取器来抓取动态数据,包括配置步骤与实例演示。

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

 一、Jmeter关联的方式:

  Jmeter中关联可以在需要获取数据的请求上 右键-->后置处理器 选择需要的关联方式,如下图有很多种方法可以提取动态变化数据:  

  

 

二、正则表达式提取器:

   1、比如需要提取如下响应文本中的 “<title>百度一下,你就知道</title>” 里面的 “百度一下,你就知道”:

  

  2、设置正则表达式提取器:

  

   说明:

  (1)引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它。

  (2)正则表达式:

    ():括起来的部分就是要提取的。

    .:匹配任何字符串。
    +:一次或多次。
    ?:不要太贪婪,在找到第一个匹配项后停止。

  (3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值

  (4)匹配数字:0代表随机取值,1代表全部取值,通常情况下填0

  (5)缺省值:如果参数没有取得到值,那默认给一个值让它取。

 

  3、使用2中获取到的值:

  

 

三、关于正则表达式的举例说明:

  1、提取单个字符串:
    假如想匹配Web页面的如下部分:name = "file" value = "readme.txt">并提取readme.txt。一个合适的正则表达式:name = "file" value = "(.+?)">。
      ():封装了待返回的匹配字符串。
      .:匹配任何单个字符串。
      +:一次或多次。
      ?:不要太贪婪,在找到第一个匹配项后停止。

  2、提取多个字符串:
    假如想匹配Web页面的如下部分:name = "file.name" value = "readme.txt">并提取file.name和readme.txt。一个合适的正则表达式:name = "(.+?)" value = "(.+?)"。这样就会创建2个组,分别用于$1$和$2$

  比如:

    引用名称:MYREF
    模板:$1$$2$

   如下变量的值将会被设定:
    MYREF:     file.namereadme.txt
    MYREF_g0:   name = "file.name"value = "readme.txt"
    MYREF_g1:  file.name
    MYREF_g2:  readme.txt

  在需要引用地方可以通过:${MYREF}, ${MYREF_g1进行使用。



说明:

简单介绍一下Jmeter正则表达式提取器的使用方法。

1、添加Jmeter正则表达式提取器

在具体的Request下添加Jmeter正则表达式提取器(Jmeter正则表达式在“后置处理器”下面)

2Jmeter正则表达式提取器控制面板,截图如下:

位置1:名称及注释

位置2:正则表达式提取内容的范围。(关于各字段的详细说明请查阅协议的相关说明)

位置3:正则表达式提取的相关设置

  • 引用名称:自己定义的变量名称,后续请求将要引用到的变量名,如填写的是:user_id,后面的引用方式是${user_id}
  • 正则表达式:提取内容的正则表达式,相当于lr中的关联函数
  • ()     括起来的部分就是需要提取的,对于你要提的内容需要用小括号括起来】
  • 【.    点号表示匹配任何字符串
  • 【+   一次或多次
  • 【?   在找到第一个匹配项后停止
  • 模板:用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$2$,$3$等等,表示解析到的第几个值给user_id。例如:$1$表示匹配到的第一个值
  • 匹配数字0代表随机取值,-1代表所有值,此时提取结果是一个数组,其余正整数代表第几个匹配的内容提取出来。如果匹配数字选择的是-1,还可以通过${user_id_1}的方式来取第1个匹配的内容,${user_id_2}来取第2个匹配的内容。
  • 缺省值:正则匹配失败时,取的值

### JMeter 正则表达式提取器使用方法 #### 什么是正则表达式提取器正则表达式提取器是一种后置处理器,主要用于从服务器响应中提动态变化的数据,例如 Session ID 或 token 等。这些数据可以在后续请求中被重用[^2]。 #### 如何添加正则表达式提取器? 要向 HTTP 请求中添加正则表达式提取器,可以右键单击目标 HTTP 请求节点,依次选择 **【添加】 -> 【后置处理器】 -> 【正则表达式提取器】** 完成添加操作。 #### 配置正则表达式提取器 以下是正则表达式提取器的主要配置项及其含义: - **引用名称**: 设置一个变量名,用于存储提的结果。在后续请求中可以通过 `${variableName}` 的形式引用该值。 - **正则表达式**: 输入能够匹配目标数据正则表达式。需要注意的是,如果响应中的特殊字符(如 `\`)需要转义,则应在正则表达式中进行相应的处理[^4]。 - **模板**: 指定提哪个捕获组的内容。通常情况下,设置为 `$1$` 即可提第一个捕获组的内容[^4]。 - **匹配数字**: 控制如何选多个匹配结果。常见的选项包括 `0`(随机)、`1`(首个匹配)以及 `-1`(所有匹配)。 - **缺省值**: 当未找到任何匹配时使用的默认值。 #### 示例:提 userSession 值 假设我们需要从某个接口返回的 HTML 页面中提名为 `userSession` 的值。以下是一个具体的实现过程: 1. **添加正则表达式提取器** 在对应的 HTTP 请求下添加正则表达式提取器。 2. **填写参数** | 参数 | 描述 | |--------------|----------------------------------------------------------------------| | 引用名称 | 设为 `userSession` | | 正则表达式 | 使用类似于 `"name='userSession' value='(.+?)'"` 的模式来定位目标字段 | | 模板 | 设置为 `$1$` | | 匹配数字 | 设置为 `1` | | 缺省值 | 可选,默认为空字符串 | 3. **验证提结果** 添加 Debug Sampler 并运行测试计划。通过查看结果树组件确认是否成功提到了预期的 `userSession` 值[^2]。 4. **调用提的值** 在其他依赖于 `userSession` 的请求中,可以直接使用 `${userSession}` 替代硬编码的值。 #### 注意事项 - 对于复杂的响应内容,可能需要调整正则表达式的复杂度以适应不同的情况。 - 如果响应是 JSON 格式,推荐优先考虑使用 JSON 提取器代替正则表达式提取器,因为后者更适合解析结构化数据[^3]。 ```python import re # 示例代码展示如何手动模拟正则表达式逻辑 response = 'name="userSession" value="abc123"' pattern = r'name="userSession"\svalue="(.+?)"' match = re.search(pattern, response) if match: extracted_value = match.group(1) print(f"Extracted Value: {extracted_value}") else: print("No Match Found") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值