Jmeter: String Index Out of Bounds Exceptions on Xpath - jmeter

Can some one please please help me on this. I am tired of looking into it.
In while loop I am reading data from csv file, navigate to web pages and get Xpath values.
I get String Index out of bounds exceptions on Xpath.
Please see this screenshot of program
Steps to execute were
1.dealers.tt -- HTTP request
2.edit_integrtaion_details.tt --- HTTP request
3.Dealer details -- HTTP Request
then Xpath entities under Dealer details
For some reason some of the records read from file... only 2 steps get executed as below.leaving other steps (3 and Xpath)
dealers.tt
edit_integrtaion_details.tt
then I get an error as
'Dealer details' : java.lang.StringIndexOutOfBoundsException: String index out of range: 8193
I tried selecting redirect automatically and follow redirects in HTTP requests to force step 3 to execute. In both cases get this error.There are no spaces for the name I get from Xpath

Most likely you are sufferin from JTidy issue #205, the options are in:
Uncheck "Use Tidy" box, if your response is valid XML or XHTML it might be the case you don't need it (unlikely though)
Compile latest JTidy from the source code and once done replace jtidy-r938.jar in "lib" folder of your JMeter installation with the brand new JTidy jar.
Switch to CSS/JQuery Extractor
Switch to Regular Expression Extractor
If XPath is totally a must you can also consider JSR223 PostProcessor and Groovy language, it has built-in support of some form of XPath. Check out Groovy Is the New Black article for more details.

Related

difficulty in handling correlation in jmeter

i have identified the dynamic values in my website which i am handling through "regular expression extractor" still when i run the website the login request fails and throw error as token not found. please help,i m struggling...[this image contain the regEx extractor part and the failed login request also][1]
We cannot help you without seeing the response (at least partial) which you're getting for the /-7 request containing this hidden input with the token, you can try locating it using "RegExp Tester" mode of the View Results Tree listener and see whether your regular expression matches something or not
One thing is obvious: using regular expressions for extracting data from HTML is not the best idea, I would recommend considering switching to CSS Selector Extractor instead:

Jmeter Debug Sampler Not Showing Regular Expression Extractor variables

I'm having some issues getting the variables from a Regular Expression Extractor to show in the View Results Tree.
Reg Ex and Test Plan
The Regular Expression Extractor is a child of the HTTP Request. The Debug Sampler and the View Results Tree are at the same level as the HTTP Request. I am trying to extract the Authorization Token.
API response
As you can see, I get a 200 response from the server with the Token.
View Results Tree with no RegEx variables
But I'm not even seeing the RegEx variables in the Debug Sampler. I would expect to see them, even if the Extractor didn't pull anything from the response. Am I missing a node? Looking in the wrong place? Using the wrong elements?
I've burned half a day researching and trying different things, please help.
Thanks.
Your regular expression is not correct, you should be using something like (.*) as your one will not match anything if you don't provide right boundary which you don't have. You can attempt sticking to line break character but it might not work if your token comes last
You're looking into wrong tab of the View Results Tree listener, JMeter Variables (including pre-defined ones) live under Response Data -> Response Body path
Check out How to Debug your Apache JMeter Script article to learn more about JMeter tests troubleshooting techniques.

On using a CSV config with JSON data the quotes are read incorrectly for the key value pair

I have a POST data from CSV used in excel
{"Name":"","Token":-1,"TimeScheduleToken":"1","AccessRule":[{"ObjectToken":"528","ObjectName":"Common_ wash_Room_Exit","RuleToken":"528","RuleType":2,"StartDate":null,"EndDate":null,"ArmingRightsId":null,"ControlModeId":null}]}
When performing a post-execution the JSON data in the request is not as same as from the CSV. Find the request in the image
Quotes given for the key value pair is doubled up and showed in the request. How to resolve this, kindly suggest
Vittal,
I have tried to reproduce your issue in JMeter 3.3 and noticed that its working fine. Please find below the settings that you need to do in 'CSV Data Config' element.
Moreover, I would recommend that when you are creating any csv file for the data then open the notepad and enter your data and then save it as .csv file to avoid any unnecessary elements/characters in the data.
You can also refer to the blog post to get more information on API load testing using JMeter: JMeter Load Testing Against APIs
I have no idea regarding how you're getting these double quotation marks, however here is how you can remove them in the runtime:
Add JSR223 PreProcessor as a child of the HTTP Request sampler
Put the following code into "Script" area:
def originalData = sampler.getArguments().getArgument(0).getValue()
def normalizedData = originalData.replaceAll("\"\"","\"")
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument("",normalizedData,"")
sampler.setPostBodyRaw(true)
That's it, the JSR223 PreProcessor will replace all occurrences of double quotation marks with single quotation marks.
sampler is a shorthand to parent sampler class implementation, in case of HTTP Request sampler it would be HTTPSamplerProxy, see class documentation for all available functions and properties.
See Apache Groovy - Why and How You Should Use It article to learn more about using Groovy scripting in JMeter tests.

Get the path of an HTTP Request from another component

I am trying to let JMeter crowl my website to ensure a realistic stress test. I was able to extract the URLs from the home page and iterate on them. So I have a regular expression feeding a ForEach loop.
Now I am not able to let an HTTP Request take the output of the loop (Defined as a variable with a name) as its path.
Is there a general approach to setting the path of such a request. JMeter is taking something like:
${MyVar}
set in the path of the request as a string and is not replacing it with the actual value.
Given your Regular Expression Extractor and ForEach Controller configurations are correct everything should work fine. If you need any assistance with this provide the following screenshots:
Regular Expression Extractor configuration
Debug PostProcessor or Debug Sampler output in the View Results Tree listener showing several generated JMeter Variables
ForEach Controller configuration
HTTP Request sampler configuration (i.e. where do you put the variable)
Be aware that you can mimic crawling the site more easily using HTML Link Parser the relevant configuration would be as simple as
See How to Spider a Site with JMeter - A Tutorial to learn more about simulating websites crawling.

Fetch Javascript variable in source section using Jmeter

I have a series of interconnected pages to test using JMeter. The problem is that the initial page has a Javascript variable in source section which is more of a session variable. This variable is passed in the URL for subsequent pages.
So basically I would like to fetch this javascript variable when I load the initial page from the source section and pass it to next URL(s).
Is there a way I can achieve this using JMeter.
Are you able to see the session variable in the response of initial page?
(in view result tree listener)
If yes, then correlate this value and pass the variable in to next request (use regular expression extractor for fetching the value, still if you are finding some issue in correlating the value than please share the response of first request over here so that I can provide you regx for that)
People mostly Regular Expression Extractor to fetch dynamic values from previous responses, in general the process looks like:
Add Regular Expression Extractor as a child of the request which returns desired data
Use Perl5-style regular expression to match what you're looking for
Provide a template to choose match group - ususally $1$ if you looking for a single value
Provide a reference name to refer the extracted value, i.e. foo
Use extracted value as ${foo} where required
You can visualise JMeter Variables using Debug Sampler and View Results Tree listener combination.
The easiest way to debug your regular expressions is using View Results Tree listener in "RegExp Tester mode"
See How to debug your Apache JMeter script article for more information on troubleshooting your JMeter test.

Resources