Невозможно прочитать значение из URL-адреса местоположения с помощью RegEx внутри почтового процессора BeanShell

Я использую JMeter для автоматизации тестов производительности. После HTTP-запроса я использовал RegEx Post Extractor для чтения заголовка ответа. Этот заголовок ответа возвращает местоположение. Местоположение - это URL-адрес конкретного проекта. Я хочу прочитать значение переменной состояния из этого URL-адреса. Для этого я использовал BeanShell PostProcessor. Например,

location: "http://www.google.com/state=asdas123123123123&query=asdasdas!@#"

Я могу прочитать значение заголовка ответа как http://www.google.com/state=asdas123123123123&query=asdasdas!@#%22 с использованием экстрактора регулярных выражений

Затем я добавил BeanShell PostProcesssor для чтения состояния и запроса.

import java.util.regex.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

try{
//location = "http://www.google.com/state=asdas123123123123&query=asdasdas!@#"
String location = vars.get("location");
String pStr = "/state=(\\S+?)&/"";
Pattern patternN = Pattern.compile(pStr);

Matcher matcher = patternN.matcher(pStr);

    if (matcher.find()) {
        vars.put("variablename_1",matcher.group(0));
    }

    
vars.put("variablename_2",location);
}catch (Exception ex) {
        vars.put("variablename_ex",ex);
    throw ex;
} 

Этот код не работает. Кажется, двойная косая черта создает проблемы.


person Vishal    schedule 21.05.2021    source источник
comment
Замените String pStr = "/state=(\\S+?)&/""; на String pStr = "state=([^\\s&]+)";, а затем используйте vars.put("variablename_1",matcher.group(1));   -  person Wiktor Stribiżew    schedule 21.05.2021


Ответы (1)


  1. Начиная с JMeter 3.1 вы должны использовать JDR223 Test Elements и язык Groovy для сценарии

  2. Groovy предоставляет оператор поиска, который выглядит как =~

  3. Предполагая, что выше 2 баллов, вы можете реорганизовать свой код до этого однострочного:

    vars.put('variablename_1', (vars.get('location') =~ /state=(\w+)&/)[0][1])
    

Демо:

введите описание изображения здесь

Больше информации:

person Dmitri T    schedule 21.05.2021