Как использовать препроцессор bean-shell для использования нескольких извлеченных значений, полученных из экстрактора регулярных выражений, в моем следующем HTTP-запросе?

Я пытался зайти на домашнюю страницу Myntra и найти puma в поле поиска с помощью JMeter. Используя экстрактор regEx, я извлек несколько значений из ответа, как показано ниже:

JMeterVariables:
JMeterThread.last_sample_ok=true
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@1589f854
START.HMS=122825
START.MS=1532069905949
START.YMD=20180720
TESTSTART.MS=1532073140645
__jmeter.USER_TOKEN__=Thread Group 1-1
outValue=puma?f=gender:men::categories:Tshirts
value_1=puma?f=gender:men::categories:Tshirts
value_1_g=1
value_1_g0="value":"puma?f=gender:men::categories:Tshirts"
value_1_g1=puma?f=gender:men::categories:Tshirts
value_2=puma?f=gender:men::categories:Casual Shoes
value_2_g=1
value_2_g0="value":"puma?f=gender:men::categories:Casual Shoes"
value_2_g1=puma?f=gender:men::categories:Casual Shoes
value_3=puma?f=gender:men::categories:Sports Shoes
value_3_g=1
value_3_g0="value":"puma?f=gender:men::categories:Sports Shoes"
value_3_g1=puma?f=gender:men::categories:Sports Shoes
value_matchNr=3

Теперь, используя для каждого контроллера, я могу передать эти значения в свой следующий HTTP-запрос и выполнить итерацию по ним один раз, как показано ниже:

Но я хочу сделать то же самое, используя препроцессор BeanShell, и я новичок в написании сценариев, поэтому мне нужна помощь в том, как я могу сделать то же самое с помощью препроцессора BeanShell и передать значения в мой следующий HTTP-запрос.

Предложения приветствуются.


person Satyajit    schedule 20.07.2018    source источник


Ответы (1)


Используйте value_matchNr, чтобы узнать, сколько экземпляров переменной у вас есть. Затем выполните цикл: создайте соответствующее имя переменной и получите ее значение с помощью vars.get(name):

// First, use the value of 'value_matchNr' to identify how many variables of type 'value_...' we have
int count = 0;
try {
    count = Integer.parseInt(vars.get("value_matchNr"));
} catch(NumberFormatException e) { log.error("Variable 'value_matchNr' was not found. There won't be any looping"); }

// Next, loop through variables (if there's at least 1 to loop through)
for(int i = 1; i <= count; i++) {
    String name = "value_" + i; // build variable name, e.g. value_1, value_2, etc
    String value = vars.get(name); // get variable value
    // at this point you can do whatever you want with the value. For example print it out:
    log.info("Variable '" + name + "' has value '" + value + "'");
}
person Kiril S.    schedule 20.07.2018