How to select random option from radio buttons in jmeter - jmeter

We have to select any one radio button option per user in jmeter. How can one achieve the same using jmeter considering the radio button options are: ONE, TWO, THREE, FOUR?

The easiest option is using HTML Link Parser, check out Poll Example - it should be exactly what you're looking for
Another option is to extract the values into JMeter Variables using Post-Processor so you will get the following variables defined:
foo_1=ONE
foo_2=TWO
foo_3=THREE
foo_4=FOUR
foo_matchNr=4
In this case you can use __V() and __Random() functions combination in order to generate a random value like:
${__V(foo_${__Random(1,${foo_matchNr},)},)}
Demo:

Related

How to correlate different values in a RegEx with multiple matches with JMeter- Correlation Recorder?

I have a problem in JMeter that I can't figure out how to solve.
Situation:
I want to load test an ASP.NET-website.
bzm - Correlation Recorder used for recording and correlation
ScriptResource and WebResource have multiple occurrences
Now I used following RegEx to extract the ScriptResource values: <script src="(.+/ScriptResource.+?)". Then I stored the 3 matched values into 3 different variables. But I can't replace the values in the found order.
Example:
First Match: stored in : AspNet_ScriptResource
Second match stored in: AspNet_ScriptResource_1
Third match stored in: AspNet_ScriptResource_2
The three matches have all different values, can't paste one value into all 3 matches.
So I have to write the value from AspNet_ScriptResource into the first match (matchNr=1).
AspNet_ScriptResource_1 into second match (matchNr = 2) and
AspNet_ScriptResource_2 into third match (matchNr = 3).
But in the Correlation Rules (in the Correlation Recorder) in the "Correlation Replacement" section, there is no option to choose in which matchNr to write.
Correlation Recorder: Correlation Rules
I tried to use a BeanShell Preprocessor with a for-loop but I only found a way to write in the logs, not in the response body.
Is there a way to solve this with the Correlation Recorder plugin? If not, what options do I have to handle such a scenario?
Thanks for your help! :)
You can raise an enhancement request for the bzm - Correlation Recorder via JMeter Plugins support forum or if you're a BlazeMeter customer and need this piece of functionality asap - you can open a support ticket for implementation of the feature.
Currently it seems that the Correlation Recorder expects you to provide a regular expression either with the unique match or you will have multiple substitutions with the same value.
With regards to Beanshell approach:
You can substitute response data, but not with the PreProcessor, you need to do this via the PostProcessor using prev.setResponseData() function
Since JMeter 3.1 you're supposed to be using JSR223 Test Elements and Groovy language for scripting
If you need to change request data, not the response data, you can do this via sampler.getArguments() function

ODI KM Option - value from FLEX FIELD

Do you think that it's possible to take a value into an ODI IKM Option (for example) from a flexfield?
Example:
You define a flex field on the target table and then pass the value in the IKM.
Then, reading the variable, it's possible to pass it to an option from the IKM?
Thanks,
After searching I found that it's not possible to do it. Conditional Expression can take predefined values. You can find in the next all the combinations:
Condition Expression – It allows you to set the required condition for
the selected option. Double-click the field for editing the condition
expression for the selected option. Click the browse icon Browse icon,
to launch the Edit Expression Editor, which enables you to create or
edit the existing groovy script that determines whether a knowledge
module should be enabled, disabled, displayed or hidden.
Examples are:
return
options.getValue("Cache").equals("true")?"show=true,enable=true":"show=false,enable=false";
This looks at the value of another KM Option called "Cache". If its
value is "false," then the KM Option is hidden, because it's not
relevant.
return
(isStreaming)?"show=false,enable=false":"show=true,enable=true";
This looks at the Mapping isStreaming property. If it's true, then
this option is hidden.
source
It is very easy to do.
You may use odiRef.getTable(java.lang.String pProperty) in the code of your IKM. One of possible values for pProperty is the code of your FlexField.
If you like to pass if through the option just pas <?…?>-substitution as a value of the option. (Probable you should play with %- or ?-substitutions, which is working.)
Refer to «Substitution API Reference» on Oracle site. Many functions like getTable, getIndex, getAK, getContext and others can obtain flexField value of an object of the corresponding type.
Additionally there is the odiRef.getFlexFieldValue() method. It gets the value of any object of any type, but it is required to pass internal IDs as an argument. So it is not convenient.

In JMeter script how to pic a random item from drop down list

I had a scenario like I need to select one random date range from drop down list of values(like today, yesterday, last month etc). How should i select one value randomly every time from the drop down list.waht function or method i need use in my jmeter script.Any one please help me. Thanks in advance
The easiest way to get this done is using HTML Link Parser, refer Poll Example user manual entry for more details, basically you need to provide input name and a wildcard like .* and JMeter will automatically scan the possible options and pick up a random value.
Other option (if the above one is not applicable for some reason) is using XPath Extractor or CSS/JQuery Extractor to get the possible dropdown values from the page DOM, Match No. parameter set to 0 will return the random option value.

Jmeter : random number with beanshell

I want to add 2 kind of parameters to a post request.
From an http request I extract 2 list of variables:
Order_id = input type="hidden" name="(drag.+?)" value="(\d+?)"
Weight_id = class="draggableviews-weight form-select" id=".+?" name="(drag.+?)"
In the Post Request that follows, I need to repost all this variables. I use a BeanShell PreProcessor for this. The first list is no problem, since this get the same value. The second list should get a new random value between -50 and 50. I also want a different random value for each iteration.
How should I do this ?
If I use Random Variabele Config Element I get the same random int for each variabele. I want a different one for each iteration.
enter image description here
I would recommend using ThreadLocalRandom.nextInt() method like
sampler.addArgument(name2, String.valueOf(java.util.concurrent.ThreadLocalRandom.current().nextInt(-50, 51)));
Don't inline JMeter Functions into Beanshell scripts, either pass them via "Parameters" section and refer via Parameters or args shorthands or use appropriate code-based substitutions.
See How to Use BeanShell: JMeter's Favorite Built-in Component guide for more information on Beanshell scripting in JMeter tests.
To retrieve multiple values from single Regular Expression Extractor, we use Templates as follows:
then refer groups as follows:
In the image, you can see that link is Reference Name and there is only match found with the regular expression.
number of matches is : link_matchNr
first group value : link_1_g1
second group value : link_1_g2
Note: The regular expression I tried on is google.com, you can also simulate the same as follows:
Use Random function as follows:
value2 = ${__Random(-50,50)};
log.info("valuee2 " + value2);
Use Random Variable:
then, refer Output Variable in Beanshell Preprocessor as follows:
value2 = vars.get("randomInt");

Jmeter scripting - how to capture value from drop down list?

I am using Jmeter to create script for one of my application. The application contains customer profile details. Few fields are present in the form of drop down list. I should correlate values that i select from the dropdown list. Below is one sample field:
-- Select --
EMPLOYEE
NORMAL
Here i need to select NORMAL which means i should capture the value NORMAL and replace it in the script.I have captured the entire list from "-- Select --
EMPLOYEE
NORMAL" in a variable and used split function to capture NORMAL from the captured value. but i am unable to capture the value NORMAL correctly. Can anyone please explain me how split function works in jmeter and what unique value should i put as seperator to capture the selected value NORMAL.
Please let me know how can this be achieved.
Thanks in Advance,
Gayathri
Have you checked out the manual on the split function?
http://jmeter.apache.org/usermanual/functions.html#__split
Example:
Define SOURCE="a||c|" in the test plan.
${__split(${SOURCE},SPLIT),|}
This will return the contents of VAR, i.e. "a||c|" and set the following variables:
SPLIT_n=4 (3 in JMeter 2.1.1 and earlier)
SPLIT_1=a
SPLIT_2=?
SPLIT_3=c
SPLIT_4=? (null in JMeter 2.1.1 and earlier)
SPLIT_5=null (in JMeter 2.1.2 and later)
In your case, to get "normal", you'd want to reference ${SPLIT_3}
Depending on the source code, it might be easier to write a regex to extract your value:
http://jmeter.apache.org/usermanual/component_reference.html#Regular_Expression_Extractor

Resources