Parameters jmeter中提取id';从请求到响应

Parameters jmeter中提取id';从请求到响应,parameters,request,jmeter,response,beanshell,Parameters,Request,Jmeter,Response,Beanshell,在jmeter中编写bean shell脚本以从请求-响应中提取N个值并将其传递到下一个请求参数的语法是什么?可能的情况太多,因此除非您分享更多细节,否则没有人能提供帮助,例如,响应(可能是部分的)以及下一个请求应该是什么样子 一般而言: 您有和prev速记,它代表父对象,因此您可以使用prev.getResponseDataAsString()方法访问父对象采样器响应主体并从中提取所需内容 您有和sampler速记,它代表这个或那个实现,因此您可以操作相关的方法和字段 有关如何使用Bean

在jmeter中编写bean shell脚本以从请求-响应中提取N个值并将其传递到下一个请求参数的语法是什么?

可能的情况太多,因此除非您分享更多细节,否则没有人能提供帮助,例如,响应(可能是部分的)以及下一个请求应该是什么样子

一般而言:

  • 您有和
    prev
    速记,它代表父对象,因此您可以使用
    prev.getResponseDataAsString()
    方法访问父对象采样器响应主体并从中提取所需内容
  • 您有和
    sampler
    速记,它代表这个或那个实现,因此您可以操作相关的方法和字段

有关如何使用Beanshell测试元素中的JMeter API以及一些示例的更多信息,请参阅

所以,如果您只想从第一个请求的响应中提取一些数据,并将其作为请求参数传递给第二个请求->您不需要使用beanshell和编写代码,Jmeter已经提供了一个称为正则表达式提取器的后处理器。在这里,您可以用Perl编写简单的正则表达式,并将引用名命名为Param1。在第二个请求中,只需将变量作为${Param1_g1}传递

假设你的回答是

<city>London</city>
伦敦
如果您希望提取London,并在另一个请求中传递它,正则表达式将是

<city>(.*)</city>
(*)

我尝试了这个方法,但它只用于捕获单个参数。我需要在一个数组中捕获多个参数,并将其传递给进一步的请求。我能够使用(.*)捕获参数。但问题是它存储在二维数组中,这让我感到困惑。响应:{“formId”:“1234”,“formResponseId”:“1”,“responseStatus”:“a”},{“formId”:“4567”,“formResponseId”:“2”,“responseStatus”:“b”},{“formId”:“1234”,“formResponseId”:“3”,“responseStatus”:“b”},{“formId”:“4567”,“formResponseId”:“4”,“responseStatus”:“b”},我想捕获与状态b匹配的表单响应id。同样,它也有成千上万的回应。首先,我需要存储所有内容,并且在存储到arrayResponse:{“formId”:“1234”,“formResponseId”:“1”,“responseStatus”:“a”}之后,响应id和状态索引值应该匹配,‌​{“formId”:“4567”,“fo‌​rmResponseId:“2”,“r”‌​回应:“b”},‌​{“formId”:“1234”,“fo‌​rmResponseId:“3”,“r”‌​回应:“b”},‌​{“formId”:“4567”,“fo‌​rmResponseId:“4”,“r”‌​响应状态“:“b”},我想捕获与状态b匹配的表单响应id。同样,它也有成千上万的回应。首先,我需要存储所有内容,并且在存储到数组中之后,响应id和状态索引值应该匹配。它被存储在二维数组中,我想进一步使用IF循环来评估特定的状态。