jmeter-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Felix Schumacher <felix.schumac...@internetallee.de>
Subject Re: Passing values from regular expression
Date Thu, 22 Jun 2017 10:43:39 GMT
Am 22.06.2017 09:06, schrieb praveen tiwari:
> Hi Felix,
> 
> Please find below an explanation in more detail:
> 
> HTML Response:

I have simplified the html to the following code:

<html>
   <body>
     <input name="fare1" value="id-1" />
     <input name="in1" id="id-1-a" />
     <input name="in1" id="id-1-b" />
     <input name="out1" id="id-1-c" />
     <input name="out1" id="id-1-d" />

     <input name="fare2" value="id-2" />
     <input name="in2" id="id-2-a" />
     <input name="in2" id="id-2-b" />
     <input name="out2" id="id-2-c" />
     <input name="out2" id="id-2-d" />
   </body>
</html>

fare1 and fare2 are your fare-ids and inX and outX are the inbound and 
outbound parameters.

> 
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------
> *FareID1:*
> <input type="radio" name="timeoutbound1" value=""
> id="ae3dc705-d5dc-4729-9288-133e036c1cda"
> optid="ae3dc705-d5dc-4729-9288-133e036c1cda" />
> <input type="radio" name="timeoutbound1" value=""
> id="22c7814f-e145-4082-86a2-09c2f922b893"
...
> <input type="radio" name="timeinbound1" value=""
> id="5852bc68-461e-4570-b5ea-fb85f4367c18"
> optid="5852bc68-461e-4570-b5ea-fb85f4367c18" />
> 
> <input id="fareRefId_1" name="FareRefId" type="hidden"
> value="7f9a6381-9569-4af2-884f-16dd39332a9a" />
> 
> *FareID2:*
> <input type="radio" name="timeoutbound2" value=""
> id="ae3dc705-d5dc-4729-9288-133e036c1cda"
> optid="ae3dc705-d5dc-4729-9288-133e036c1cda" />
> <input type="radio" name="timeoutbound2" value=""
> id="22c7814f-e145-4082-86a2-09c2f922b893"
...
> <input type="radio" name="timeinbound2" value=""
> id="f2a18f88-e87f-47f7-a31a-1cc92b905348"
> optid="f2a18f88-e87f-47f7-a31a-1cc92b905348" />
> <input type="radio" name="timeinbound2" value=""
> id="dae19c11-dfa3-4483-8c0c-b06f0ec28c07"
> optid="dae19c11-dfa3-4483-8c0c-b06f0ec28c07" />
> 
> <input id="fareRefId_2" name="FareRefId" type="hidden"
> value="7f9a6381-9569-4af2-884f-16dd39332a9a" />
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------
> 
> For "*fareRefId_1*" there are* multiple values of "timeinbound1" and
> "timeoutbound1". *
> For "*fareRefId_2*" there are* multiple values of "timeinbound2" and
> "timeoutbound2". *
> 
> Similarilty there are multiple "fareRefId_No." in my response.
> 
> Scenario is that I need to extract value of "timeinbound" and 
> "timeoutbound"
> depending on the value of fareRefId_No.
> e.g. if fareRefId_2 - pass any value of "timeinbound2" and 
> "timeoutbound2".
> fareRefId_9 - pass any value of "timeinbound9" and "timeoutbound9".

So you have a loop with a counter that you can reference as ${counter} 
that counts from 1 to 2.

  - controller loop
    - config counter
    - sampler http
      - extractor (fare)
      - extractor (in)

You are using a regex extractor in your example, but I think you are 
better of using a css/jquery extractor:

For extractor (fare) the config woukd be:
   reference name: fare
   expression: input[name='fare${counter}']
   attribute: value
   match no.: 1

For extractor (in) you would use:
   reference name: in
   expression: input[name='in${counter}']
   attribute: id
   match no.: -1

This setup should give you the following variables and their respective 
values:
   counter=X
   fare=id-X
   in_1=id-X-a
   in_2=id-X-b
   in_MatchNr=2

It should be straightforward to extend the tests for include outX

The same can be accomplished with regex extractors and setting the 
"match no." to the same values as above. But I think css extractor is 
easier to get right.

Hope this helps,
  Felix

> 
> I have added a "counter" config element in a while loop before calling 
> the
> request containing below regular expression.
> 
> *Counter Config Element:*
> Start: 2
> Increment: 1
> Reference name: Count
> 
> *Regular Expression used:*
> 
> Variable: FareReferenceId
> Reg Exp: <input id="fareRefId_(.+?)" name="FareRefId" type="hidden"
> value="(.+?)" />
> Template: $1$$2$
> Match No. ${Count}
> Variable Passed: ${FareReferenceId_g2}
> 
> Variable: Timeinbound
> Reg Exp: <input type="radio" name="timeinbound(.+?)" value="" 
> id="(.+?)"
> optid
> Template: $1$$2$
> Match No. ${Count}
> Variable Passed: ${Timeinbound_g2}
> 
> Variable: Timeoutbound
> Reg Exp: <input type="radio" name="timeoutbound(.+?)" value="" 
> id="(.+?)"
> optid
> Template: $1$$2$
> Match No. ${Count}
> Variable Passed: ${Timeoutbound_g2}
> 
> Issue I am facing is that if counter = 2, it passed 2nd value of 
> fareRefId,
> Timeinbound and TimeOutbound, while I need if counter = 2, it should 
> pass
> second value of  fareRefId and any value of Timeinbound2 and 
> TimeOutbound2,
> 
> Please let me know if you need more information.
> 
> On 22-Jun-2017 11:06 am, "Felix Schumacher" <
> felix.schumacher@internetallee.de> wrote:
> 
>> 
>> 
>> Am 21. Juni 2017 18:31:43 MESZ schrieb praveen tiwari <
>> praveentiwari5@gmail.com>:
>> >Hi All,
>> >
>> >I have a scenario as below and seeking for help on same.
>> >
>> >I have a request and it's response contains data as below which I am
>> >able
>> >to extract using regular expression:
>> >
>> >For
>> >Fare 1
>> 
>> What is fare? I don't understand it?
>> 
>> >ABC 1, ABC 1, ABC 1 (multiple times)
>> Is ABC 1, ABC 1, ABC 1 already multiple times, or is it three times x 
>> ABC 1
>> 
>> Maybe you could give a more concrete example with?
>> 
>> >XYZ 1, XYZ 1, XYZ 1  (multiple times)
>> >
>> >Fare 2
>> >ABC 2, ABC 2, ABC 2 (multiple times)
>> >XYZ 2, XYZ 2, XYZ 2  (multiple times)
>> >
>> >Fare n
>> >ABC n, ABC n, ABC n (multiple times)
>> >XYZ n, XYZ n, XYZ n  (multiple times)
>> >
>> >Required scenario is:
>> >when I am getting fare 1, I need to select ABC 1 and XYZ 1.
>> >when I am getting fare 2, I need to select ABC 2 and XYZ 2.
>> >when I am getting fare n, I need to select ABC n and XYZ n.
>> >
>> >Problem I am facing is I am able to fetch "fare n" but when same number
>> >(n)
>> >is applied on ABC/XYZ in regular expression (templates), I am getting
>> >value
>> >from different fare section. e.g if I consider fare 2 (defined number
>> >in
>> >regexp template is 2), I am getting 2nd value from Fare 1 (ABC 1 and
>> >XYZ 1
>> >which is at 2nd position).
>> 
>> I don't understand the description. Could you give the concrete regex 
>> and
>> templates you are using?
>> 
>> Regards,
>>  Felix
>> 
>> >
>> >Any help with implementation of above login would be highly
>> >appreciated.
>> >If required more details, please let me know.
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
>> For additional commands, e-mail: user-help@jmeter.apache.org
>> 
>> 

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
For additional commands, e-mail: user-help@jmeter.apache.org


Mime
View raw message