正则表达式

当前位置:正则表达式 > jmeter

jmeter正则表达式

正则表达式用于根据模式搜索和操作文本。JMeter通过包含模式匹配软件Apache Jakarta ORO来解释在JMeter测试计划中使用的正则表达式或模式的形式。

通过使用正则表达式,我们可以节省大量时间,并在创建或增强测试计划时实现更大的灵活性。正则表达式提供了一种简单的方法来从页面获取信息,当不可能或很难预测结果时。

使用表达式的标准使用示例是从服务器响应获取会话ID。如果服务器返回唯一的会话密钥,我们可以使用我们的加载脚本中的表达式轻松获取它。

要在测试计划中使用正则表达式,您需要使用JMeter的正则表达式提取器。您可以在测试计划中的任何组件中放置正则表达式。

值得强调的是包含匹配之间的差异,如Response Assertion测试元素所使用的 -

  • 包含意味着正则表达式与目标的至少部分匹配,因此"alphabet""包含“"ph.b." 因为正则表达式与子string"phabe"匹配。

  • 匹配意味着正则表达式匹配整个目标。因此,"字母"与"al。* t"匹配。

假设您要匹配网页的以下部分 -

name="file" value="readme.txt" 

而你想提取readme.txt。一个合适的正则表达式将是 -

name="file" value="(.+?)">

以上特殊字符是 -

  •  - 这些包含要返回的匹配字符string的部分

  •  - 匹配任何字符

  • + - 一次或多次

  •  - 第一次匹配成功时停止

创建JMeter测试计划

让我们通过编写测试计划来了解正则表达式提取器 - 后处理器元素中正则表达式的使用。此元素使用正则表达式从当前页面提取文本,以标识所需元素符合的文本模式。

首先,我们编写一个HTML页面,其中列出了人员及其电子邮件ID。我们将其部署到我们的tomcat服务器。html(index.html)的内容如下 -

<html>
   <head>
   </head>
	
   <body>
	
      <table style="border: 1px solid #000000;">
		
         <th style="border: 1px solid #000000;">ID</th>
            <th style="border: 1px solid #000000;">name</th>
            <th style="border: 1px solid #000000;">Email</th>
			
         <tr>
            <td id="ID" style="border: 1px solid #000000;">3</td>
            <td id="Name" style="border: 1px solid #000000;">Manisha</td>
            <td id="Email" style="border: 1px solid #000000;">manisha@domain.com</td>
         </tr>
			
         <tr>
            <td id="ID" style="border: 1px solid #000000;">4</td>
            <td id="Name" style="border: 1px solid #000000;">joe</td>
            <td id="Email" style="border: 1px solid #000000;">joe@domain.com</td>
         </tr>
			
      </table>
		
   </body>
	
</html>

将其部署在tomcat服务器上时,此页面将如下图所示:

HTML页面

在我们的测试计划中,我们将在上面的人员列表页面中选择人员表的第一行中的人员。要捕获此人的ID,请先确定我们将在第二行找到该人的模式。

从下面的快照中可以看出,第二个人的ID由<td id =“ID”>和</ td>包围,它是具有此模式的第二行数据。我们可以使用它来匹配我们要从中提取信息的确切模式。当我们要从该页面中提取两条信息时,人员ID和个人姓名,字段定义如下:

HTML页面源代码

启动JMeter,添加线程组测试计划>添加>线程(用户)>线程组

下一步添加一个采样器HTTP请求,选择测试计划,右键单击Add> Sampler> HTTP Request,输入详细信息如下图所示:

  • name - 管理

  • 服务器名称或IP - localhost

  • 港口号 - 8080

  • 协议 - 我们将保持空白,这意味着我们希望HTTP作为协议。

  • Path - jmeter / index.html

HTTP请求采样器

接下来,添加一个正则表达式提取器。选择HTTP请求采样器(管理),右键单击添加>后处理器>正则表达式提取器

正则表达式提取器

下表提供了上述截图中使用的字段的描述 -

范围 描述
参考名称 提取的测试将被存储的变量的名称(refname)。
正则表达式 要提取的文本将匹配的模式。将提取的文本组由字符"("和")"包围。我们使用"。+?" 以表示由<td ..> .. </ td>标签包围的文本的单个实例。在我们的示例中,表达式是 - <td id =“ID”>(+?)</ td> s * <td id =“Name”>(+?)</ td> s *
模板 每组提取的文本按照“("和")"所包含的每个模式组的顺序放置为变量Person的成员。每个组存储为refname_g#,其中refname是您输入的字符string作为参考名称,#是组号。$ 1 $表示组1,$ 2 $表示组2等。$ 0 $表示整个表达式匹配的任何值。在这个例子中,我们提取的ID保存在Person_g1中,而Name值存储在Person_g2中。
比赛号 因为我们只计算出第二次出现这种模式,与第二个志愿者匹配,所以我们使用值2.值0将进行随机匹配,而负值必须与ForEach控制器一起使用。
default 如果没有找到该项,这将是默认值。这是一个可选字段。你可以把它留空。

添加一个监听器来捕获此测试计划的结果。右键单击线程组,然后选择添加>侦听器>查看结果树选项以添加侦听器。

将测试计划保存为reg_express_test.jmx并运行测试。输出将成功,如下面的屏幕截图所示 -

正则表达式输出

相关文章
苏ICP备2022026517号-2  |   苏公网安备 32081202000316号
淮安先皓网络科技有限公司 © 版权所有  联系我们