我想从JMeter
中的给定XML响应中提取所有orderNumber值正在使用的正则表达式:orderNumber=(".*?")
XML:
<?xml version="1.0" encoding="UTF-8"?>
<ReportExecuted ReportId="4130" >
<DisplayName>Partner Asset - Landing Page (No Glis Orders) Descending</DisplayName>
<ExecutedBy>admin</ExecutedBy>
<ExecutionTime>Thu Nov 16 07:32:29 UTC 2017</ExecutionTime>
<PageNumber>1</PageNumber>
<PageSize>10</PageSize>
<DisplayRecords>1 to 10</DisplayRecords>
<TotalRecords>1000</TotalRecords>
<ReportContent>
<![CDATA[
<partnerAssetLandingPage orderNumber="AutoSoapEONID11486" orderDate="2017-07-20T00:00:00"/><partnerAssetLandingPage orderNumber="AutoOrder101" orderDate="2016-11-04T00:00:00"/>
]]>
</ReportContent>
</ReportExecuted>
运行Jmeter后的响应: 我只获得第一个订单号值,但我希望所有订单没有值
答案 0 :(得分:1)
您的正则表达式没问题,您应该将Match No.
更新为-1(或负数),然后按引用名称更新get all the values,例如orderNumber - 使用orderNumber_1,orderNumber_2,...
如果匹配编号设置为负数,则处理采样器数据中的所有可能匹配项。变量设置如下:
refName_matchNr - 找到的匹配数量;可能是0
refName_n,其中n = 1,2,3等 - 由模板生成的字符串
refName_n_gm,其中m = 0,1,2 - 匹配的组n
refName - 始终设置为默认值
refName_gn - 未设置
请注意,在这种情况下,refName变量始终设置为默认值,并且未设置关联的组变量。
您可以使用ForEach Controller
它特别适合使用正则表达式后处理器运行。
这可以从先前请求的结果数据中“创建”必要的输入变量。通过省略“_”分隔符,可以使用ForEach控制器通过输入变量refName_g循环遍历组,并且还可以使用形式为refName _ $ {C的输入变量循环遍历所有匹配中的所有组。 } _g,其中C是计数器变量。