这是我们最受欢迎的博文,我们添加了更多提取器。这篇文章解释了如何使用正则表达式提取器从第一个请求的响应中提取密钥,并将提取的密钥用于后续请求。我们称之为JMeter Extract并重复使用。
现在您可以使用其他提取器,JSON提取器和Xpath提取器。我们已将此添加到此博客文章的末尾。
您可以使用正则表达式提取器从第一个请求的响应中提取密钥,并将提取的密钥用于后续请求。我们称之为JMeter Extract并重复使用。以下是步骤:
- 右键单击第一个请求并添加后处理器:Regular Expression Extractor。
- 创建正则表达式并在其他必填字段中提供值。有关更多详细信息,请参阅JMeter组件参考。
- 提取的值将保存在作为参考名称给出的变量中。
- 您可以在后续请求中使用此变量。
示例测试计划 - JMeter提取和重复使用
我们以OpenWeather API为例,将提取cityid
- 让我们假设“按城市当前的天气”是您的第一个要求。响应此请求,它返回城市ID。我添加了一个正则表达式提取器,它将提取城市ID,提取的值将保存在“cityid”变量名中。
- “cityid”变量在后续请求中发送。例如,它用于“按城市ID的当前天气”请求。
我们现在已经完成了JMeter提取和重用。
您可以 使用RedLine13上任何移动应用程序,Web应用程序或API的JMX脚本运行 JMeter负载测试。这里有 结果 检查出来。
或者去尝试自己的负载测试。
更多提取器 - JMeter提取和重复使用
这个新部分将解释如何使用JSON提取器或Xpath提取器从第一个请求的响应中提取密钥,并将提取的密钥用于后续请求。这也是JMeter Extract和重复使用的一部分。
使用JSON Extractor提取
JSON是一种非常简单的数据格式,它已经超越了 XML 的流行程度。越来越多的 REST API 和服务器使用JSON作为主要数据交换格式。从JMeter 3.0开始,使用JSON后处理器提取器从JSON响应中提取数据要容易得多。JSON后处理器使您可以使用JSON-PATH语法从响应中提取数据。此后处理器与正则表达式提取器非常相似。它必须作为HTTP Sampler的子项或具有响应的任何其他采样器放置。它将允许您以非常简单的方式提取文本内容。有关更多详细信息,请参阅JSONPath语法。
为了演示JSON后处理器的使用,让我们使用https://jsonplaceholder.typicode.com/todos/1休息服务,它允许您演示发送请求和获取响应。
如果单击此链接或将粘贴复制到浏览器中,您将看到响应。响应采用JSON格式:
1. {
2. “userId” :1 ,
3. “id” :1 ,
4. “title” :“delectus aut autem” ,
5. “完成” :假
6. }
从上面的响应中,您可以完全使用JSON路径和JSON后处理器来提取userId,id和title。请按照以下步骤提取值。
使用以下参数添加HTTP请求采样器:
协议: https 服务器名称或IP: jsonplaceholder.typicode.com 方法: GET 路径: / todos / 1
添加JSON后处理器作为HTTP请求采样器的子代:
创建变量的名称: userID JSON路径表达式: $ .userId 匹配号: 1
上面的JSON提取器提取userId并存储在userID中。您可以使用$ {userID}重用此变量。
要了解有关编写JSON路径表达式的更多信息,请参阅http://goessner.net/articles/JSONPath/index.html#e2
使用XPath Extractor解压缩
XPath定义为 XML路径。 它是使用XML路径表达式在网页上查找任何元素的语法或语言。XPath用于使用HTML DOM结构查找网页上任何元素的位置。为了演示XPath提取器的使用,让我们假设我在JMeter中的一个HTTP请求有以下响应:
1. <div class = “container” >
2. <h2>选择您的出发城市:</ h2>
3. <form action = “reserve.php” method = “post” >
4. <select name = “fromPort” class = “form-inline” >
5. <option value = “Paris” >巴黎</ option>
6. <option value = “Philadelphia” >费城</ option>
7. <option value = “Boston” > Boston </ option>
8. <option value = “Portland” > Portland </ option>
9. <option value = “San Diego” >圣地亚哥</ option>
10. <option value = “墨西哥城” >墨西哥城</ option>
11. <option value = “SãoPaolo” >SãoPaolo</ option>
12. </选择>
13. <P>
14. <h2>选择目的地城市:</ h2>
15. <select name = “toPort” class = “form-inline” >
16. <option value = “Buenos Aires” >布宜诺斯艾利斯</ option>
17. <option value = “Rome” >罗马</ option>
18. <option value = “London” >伦敦</ option>
19. <option value = “Berlin” >柏林</ option>
20. <option value = “New York” >纽约</ option>
21. <option value = “Dublin” >都柏林</ option>
22. <option value = “Cairo” >开罗</ option>
23. </选择>
我们可以将fromPort值和toPort值提取到两个不同的变量中,然后将其传递给下一个请求。如果构建正则表达式(value =“(。+?)”>),它会在单个数组中捕获fromPort和toPort的所有值。使用正则表达式提取此类值非常困难。您可以使用XPATH提取器来提取它们。
要为fromPort提取随机选项值,可以使用 // 在Xpath字段中选择[@ name ='fromPort'] / *并将匹配编号设置 为0。
要提取 toPort,您可以使用 // 在Xpath字段中选择[@ name ='fromPort'] / *并将匹配编号设置 为0。
您可以使用RedLine13上任何移动应用程序,Web应用程序或API的JMX脚本 运行 JMeter负载测试 。以下是 结帐的示例结果。
或者去尝试自己的 负载测试。