Функции и переменные JMeter - PullRequest
1 голос
/ 05 марта 2020

Я новичок в JMeter, поэтому этот вопрос может показаться совершенно глупым ...

У меня есть все oop, в котором переменная (скажем, она называется "raw") изменяется и записывается подавать каждую итерацию. Переменная содержит HTML кодированный текст, поэтому ее необходимо преобразовать в простой текст. Я узнал, что это можно сделать с помощью функции __unescapeHtml. Когда я попытался использовать его, это сработало, но я всегда получал тот же текст, что и на первой итерации. Затем я узнал, что для доступа к переменной я должен использовать vars.get вместо ${}. Поэтому я изменил ${__unescapeHtml("${raw}")} на ${__unescapeHtml(vars.get("raw")}, что помогло: vars.get получает новое значение raw на каждой итерации, но __unescapeHtml сейчас вообще не работает - он просто возвращает закодированный текст из raw. Мне не удалось найти что-либо об этой проблеме, поэтому я застрял.

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Завершено использованием

import org.apache.commons.lang3.StringEscapeUtils

...

StringEscapeUtils.unescapeHtml4(vars.get("raw"))

Не знаю, хороший ли это способ, но по крайней мере это работает.

0 голосов
/ 07 марта 2020

Я предполагаю, что вы используете выражение ${...} внутри сэмплера JSR-223 или аналогичного контекста. В руководстве пользователя для пробоотборника JSR-223 указано, что JMeter может кэшировать эти сценарии. Вот почему вы получаете значения только при первом создании контекста.

То же самое верно для простых вычислений переменных, как ${varname}, как и для вызовов функций, таких как ${__unescapeHtml(...)}.

* 1009. * Решение здесь таково:
  • не используйте ${...} внутри контекстов JSR-223, которые могут быть кэшированы.
  • однако вы можете передать эти выражения (${...} ) в контекст, используя их в качестве параметров через вход, помеченный Parameters в сэмплере JSR-223 - снова при условии, что вы его используете.
  • вы можете использовать функции, выбранные вами JSR-223 контекст дает вам, как вы сделали, используя StringEscapeUtils#unescapeHtml4
...