How to Re-use data generated by one Response to other request? - jmeter

In my application while executing the first request one unique key is generated which key is required for Next all the request. let me how to automate such scenario in Jmeter.

The process should look as follows:
Add Post Processor to the first request
Configure it to extract the required value and store it into a JMeter Variable
Use JMeter Variable from step 2 in your next request.
Depending on response data type you have the following choices:
Regular Expression Extractor - for text
CSS/JQuery Extractor - for HTML
XPath Extractor - for XML and XHTML
JSON Path Extractor - for JSON
It is also possible to extract data from files i.e. if response is in PDF format, but it's a little bit tricky
Example configuration to store the whole response:
Reference Name: any suitable variable name, i.e. response
Regular Expression: (?s)(^.*)
Template: $1$
You can refer the extracted value as ${response} where required. You can also amend the regular expression to extract response part instead of the whole response. JMeter uses Perl5-compatible regular expressions, see Regular Expressions User Manual Chapter for details

You can use regular expression extractor to extract the key from the response of your first request and use the extracted key for subsequent requests. To achieve this:
Right click on the first request and add post processor: Regular Expression Extractor.
Create your regular expression and provide values in other required fields. Please refer to JMeter component reference http://jmeter.apache.org/usermanual/component_reference.html#Regular_Expression_Extractor
Extracted value will be saved in the variable given as reference name
Use this variable in subsequent requests
Here is an example test plan with results.

Related

Extracted Regex Value not getting passed into next POST request body in Jmeter

In my first request I am able to extract the value using Regular Expression Extractor which is clearly visible into the debug sampler. The value is extracted by setting the following options in Regular Expression Extractor:-
Name of Created Variable:- instanceUID
Regular Expression:- "InstanceUid":"(.*?)"
Template:-$1$
Match No:-1
Default Value:- (Blank)
The value that I want to pass in the next POST request is visible as:-
instanceUID_g1=2ab5dfb8-a217-4ff2-9025-523565b7b7ad
And the body for the next HTTP POST request is set like this:-
${"iInfo":{"InstanceUid":"${instanceUID_g1}","Registry":"${Registry}"}}
When this request seen in detail inside View Results Tree looks like:-
${"iInfo":{"InstanceUid":"${instanceUID_g1}","Registry":"AAX"}}
As seen the value of ${instanceUID_g1} did not get substituted in the POST body as was for variable ${Registry} which was taken from CSV config.
Being new to Jmeter can anyone suggest what did I miss?
Most probably your Regular Expression Extractor placement is not very correct, be informed about JMeter Scoping Rules concept
If you place Regular Expression Extractor as a child of the request - it will be applied to this request only
If you place Regular Expression Extractor at the same level as several requests - it will be applied to all of them
in the latter case it will be applied 1st to 1st sampler, then to Debug Sampler, then to 3rd sampler so on 2nd step it will be overwritten, most probably that's your problem
Also it appears that you're getting the data from JSON so it makes more sense to use JSON Extractor or JMESPath Extractor

extract the a field value with same name from JSON using JMeter

In the JSON response I have multiple fields with same name inside different tags . But I need to fetch the from that tag where matches the number I want. Say in the below examplele I want to fetch the value "(786)402-9010" when customerPpid=467133011
[{"oopId":"110034477","timestamp":"3698652681958","targetType":"TMTroubleCall","billAccount":"3655732026","customerFormattedPhoneNumber":"(786)505-2911","customerIsRequestingCallBack":"false","customerPpid":"609188407","acceptTime":"03/16/2018 11:31:00","originator":"DPH0GNL","priorityForDisplay":"3","remarks":"test","ddbKey":"8614147890T","displayType":"SNCU","parentFplId":"268224478","parentActualDeviceType":"TXU","parentDdbKey":"8614147890T","parentTroubleCoordinateX":"863634","parentTroubleCoordinateY":"459622","parentPreviousProtectiveDeviceStack":"268221704,23282601,23281142","toldItr":"03/16/2018 14:30:00","toldMode":"N","ticketCallComplaints":[{"componentId":"1685289","description":"No Current"}],"customerLanguageMenuOption":"1"},
{"oopId":"114249429","timestamp":"3698652636567","targetType":"TMTroubleCall","billAccount":"6182150000","customerFormattedPhoneNumber":"(786)402-9010","customerIsRequestingCallBack":"false","customerPpid":"467133011","acceptTime":"03/16/2018 11:31:00","attachTime":"03/16/2018 11:31:00","originator":"DPH0GNL","priorityForDisplay":"3","remarks":"testing","ddbKey":"8614154820T","displayType":"SNCU","parentFplId":"268224477","parentActualDeviceType":"TXU","parentDdbKey":"8614154820T","parentTroubleCoordinateX":"864084","parentTroubleCoordinateY":"459307","parentPreviousProtectiveDeviceStack":"268221704,23282601,23281142","toldItr":"03/16/2018 14:30:00","toldMode":"N","ticketCallComplaints":[{"componentId":"1685289","description":"No Current"},{"componentId":"4063885","description":"Customer checked breaker"}],"customerLanguageMenuOption":"1"},
how should i do it?
Add JSON Extractor as a child of the request which returns the above JSON
Configure it as follows:
Names of created variables: anything meaningful, i.e. phone
JSON Path Expressions:
$..[?(#.customerPpid == '467133011')].customerFormattedPhoneNumber
That's it, now you should be able to access the extracted value as ${phone} where required.
Demo:
References:
JSON Path Operators
JMeter's JSON Path Extractor Plugin - Advanced Usage Scenarios
Use the following Json path expression
$..[?(#.customerPpid=="467133011")].customerFormattedPhoneNumber
Add a JSON extractor to the request as shown in the screenshot below
Please follow this Link for more info on extracting variables
Jmeter Json Extractor

How I can get a random value string in href by JSON Path Extractor with JMeter?

I have JSON responce
{
"sessionName":"eL7tYgxhYh",
"imageSrc":"/Common/CaptchaImage/**eL7tYgxhYh**?t=636573960197174426"
}
How I can get a random value string "eL7tYgxhYh" in href by JSON Path Extractor with JMeter?
You cannot achieve this using JSON Extractor as it can only deal with JSON Objects, i.e. you can easily get full value of the imageSrc attribute, but not more.
I would recommend switching to Boundary Extractor instead, the relevant configuration would be something like:
Name of created variable: anything meaningful, i.e. href
Left Boundary: CaptchaImage/
Right Boundary: ?
That's it, the "interesting" value should be now extracted and you should be able to refer it as ${href} where required
Demo:
More information: The Boundary Extractor vs. the Regular Expression Extractor in JMeter
JSON format is in key-value pair so you just need to mention the key for which you need to extract the value. As in your case, you can use following JSON path expression for fetching the text mentioned by you:
$.sessionName
You can also use regular expression extractor which is another most important element of JMeter to extract the dynamic variables. Please refer to below blog of RedLine13 for more information on Regular Expressions:
https://www.redline13.com/blog/2016/01/jmeter-extract-and-re-use-as-variable/
Let me know if you have any further question
Above figure shows how to access access_token response of json and store it in access_token variable. In your case need to replace below.
JSONPath Expression use
$..sessionName
Destination variable Name
SessionName
more information for accessing json path
To Get "636573960197174426"
To get required string from result string you can use BeanShell Assertion to split the string.
And Use link to fetch the vaiable properties and jmeter elements
To Fetch jmeter Elements

jmeter: extract information from headers and save it to a variable

My task is to make a request and save some data from the headers in a variable and use it later in another requests.
So I've added an http request and added an regular expression extractor. Here is my setup:
And then I've created another request and I'm using the LocationToken variable, but there the variable has the default value (dd). here is the response:
So, as you can see, the pattern patches on the headers. So what have I done wrong?
In Regular Expression Extractor, under Apply to section, you should select Main sampler and sub-samplers option but not JMeter Variable.
Regular Expression Extractor saves the value into the variable which we specified in Reference Name field.
in the question,
Reference Name: LocationToken
in later request, you refer the value as follows:
${LocationToken}

Regular expression in Jmeter for a json reponse

How do i write the regular expression for the json response.
My json response is "publisher":"/api/web/publishers/194".
From this response i want to get only the numeric value i.e 194. Some one pls help in getting it?
If "194" is the only integer in your response than your regex can be limited to just '(\d+)`
If you response contains more digits, you'll need to be more specific, like
"publisher":"/api/web/publishers/(\d+)"
So something like:
Reference Name: publisher
Regular Expression: "publisher":"/api/web/publishers/(\d+)"
Template: $1$
Will extract "194" and store it in "publisher" JMeter Variable. You'll be able to refer to it as ${publisher} later in Thread Group.
Going forward if you'll need to extract something from more complex JSON structures I'd recommend consider using JSON Path Extractor available via JMeter Plugins - the extractor lives in "Extras with Libs Set" package.
See Using the XPath Extractor in JMeter guide (scroll down to "Parsing JSON") for more information and XPath to JSON mapping.

Resources