Regex Extractor оснащен динамическим регулярным выражением в JMeter - PullRequest
2 голосов
/ 17 марта 2011

Есть ли способ настроить экстрактор регулярных выражений с регулярным выражением, состоящим из динамической переменной (например, $ {var}).

Обоснование заключается в том, что одним из разделов моего плана тестирования является получение идентификатора пользователя определенной учетной записи пользователя из ответа html, поэтому впоследствии Jmeter продолжит свою работу с этим идентификатором пользователя в качестве ссылки. Если я беспокоюсь только об одной теме в плане тестирования, это будет так просто, как показано ниже

<.*id=(/d+).*value="johndoe" 

Но я хочу, чтобы план тестирования был достаточно гибким, чтобы обрабатывать несколько потоков, причем каждый поток представляет собой уникального пользователя, поэтому регулярное выражение должно быть примерно таким, как показано ниже

<.*id=(/d+).*value="${USERNAME}"

Один или два совета о том, как этого добиться, будут оценены. Если это не достижимо, альтернативный способ также будет хорош

Спасибо

Ответы [ 7 ]

4 голосов
/ 22 апреля 2011

Привет,

Будущий любитель Jmeter скоро обнаружит, что это происходит часто.Вам просто нужно экранировать специальные символы в вашем регулярном выражении.Знак доллара имеет особое значение в регулярных выражениях PERL, поэтому нам нужно указать регулярному выражению использование литерала $:

<.*id=(/d+).*value="\${USERNAME}"

Кроме того, раздел id немного жадный.Я бы порекомендовал:

<.*id=(/d+?) value="${USERNAME}"
3 голосов
/ 13 марта 2013

У меня была похожая проблема, и простое экранирование символа $ не работало для меня.

Вместо этого мне пришлось использовать функцию __V ().
Так что в этом примере регулярное выражение будет выглядеть так:

<.*id=(/d+).*value="${__V(${USERNAME})}"

Мне не нужно было бежать от символа $. Я использую JMeter 2.9

2 голосов
/ 06 ноября 2013

В Apache JMeter 2.9 правильное выражение для включения значения переменной $ {MYVARIABLE} внутри регулярного выражения:

__V(${MYVARIABLE})

Это должно быть помещено в нужное место в регулярном выражении.

Работает нормально !!!

1 голос
/ 07 сентября 2013

Для меня нет необходимости избегать чего-либо (в синтаксисе переменных Jmeter). Я использую JMeter 2.9

Установка только переменной (содержащей все регулярные выражения, может быть динамически сгенерированной), например $ {regex}, в поле «Регулярное выражение» также работает.

0 голосов
/ 01 ноября 2017

Единственный способ, которым я это сделал, - сначала создать строку, объединить переменные и остальную часть шаблона и сохранить их в переменной (это в PostProcessor).И положить его в экстрактор регулярных выражений.

0 голосов
/ 21 марта 2017

Для Jmeter 3.1 мне пришлось использовать синтаксис $ {__ V ($ {MYVAR})}, как @spark и @carlos AG, заявленные

0 голосов
/ 26 апреля 2013

Эта проблема меня тоже раздражала.Единственное решение, которое мне помогло, - добавить BeanShell Sampler с кодом такого типа:

String S = "бла-бла-бла ... \\\ d... $ {Моя переменная} ... бла-бла-бла ";

vars.put (" RegExp ", S);

ИЗатем в Regular Expression Extractor a использовал только это:

$ {RegExp}

NB Обратите внимание, что по какой-то причине \ d необходимоэкранируется с помощью ТРИ обратных косых черт ... facepalm.jpg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...