Как получить родительский URL текущего неудачного URL в Jmeter?
Я пытаюсь получить родительский URL текущего невыполненного запроса (например, для веб-сайта, посвященного путешествиям, родительский URL будет поисковой службой, а текущий URL выбирает страницу рейсов). Как мы можем это сделать? после сбоя URL-адреса и бобовой оболочки, чтобы он выбирал родительский URL-адрес для всех запросов на сбойные рейсы. Но происходит то, что, если текущий запрос на полет является фальсификацией, он не перейдет к следующему, если контроллер вообще. Исполнение останавливается. Кто-нибудь может направить меня с лучшим путем?
1 ответ
- Прежде всего, забудьте о Beanshell, вы должны использовать JSR223 Test Elements и язык Groovy для сценариев, начиная по крайней мере с JMeter версии 3.1 (для более ранних версий это также было рекомендовано, однако Groovy не был включен в дистрибутив JMeter)
- Добавьте JSR223 PostProcessor как дочерний элемент для второго запроса
Поместите следующий код в область "Сценарий":
if (!prev.isSuccessful()) { log.info('Previous sampler name: ' + ctx.getPreviousSampler().getName()) log.info('Previous sampler URL: ' + ctx.getPreviousSampler().getUrl().toString()) }
Вот и все, вы должны увидеть имя предыдущего сэмплера и его URL на панели просмотра журнала и в файле jmeter.log
Вы можете сохранить URL-адрес в переменную JMeter, например:
vars.put('url', ctx.getPreviousSampler().getUrl().toString())
После этого вы сможете получить доступ к значению как
${url}
где требуется.
Рекомендации:
prev
обозначает текущий SampleResultctx
это сокращение для JMeterContextvars
это сокращение для JMeterVariables
См. JavaDoc для вышеупомянутых классов для описания используемых функций и статью Apache Groovy - почему и как вы должны это использовать для получения дополнительной информации о скриптах Groovy в JMeter.