jMeter - Estrai il valore dalla variabile

Aug 17 2020

Sto usando jMeter per eseguire uno stress test di un sito web. Devo passare il valore di una variabile alla prossima richiesta.

Il valore può essere visualizzato come segue nel corpo della risposta:

var _data = {};
_data["_as_csrf_token"] = "64da5d341c253c2a181796d2524e57c6502d906b";
jQuery.ajaxSetup({ data: _data, type: "POST" });

Come devo usare l'estrattore di espressioni regolari per ottenere questo valore?

Risposte

UBIKLOADPACK Aug 17 2020 at 15:13

Il modo più semplice è utilizzare l'estrattore di confine:

Imposta a sinistra su:

dati ["_ as_csrf_token"] = "

E diritto a:

";

Se vuoi usare l'estrattore di espressioni regolari, usa:

dati \ ["_ as_csrf_token" \] = "[^"] +? ";

DmitriT Aug 17 2020 at 23:04

L'espressione regolare pertinente sarebbe:

_data\["_as_csrf_token"\] = "(\w+)";

Demo:

  • devi prima sfuggire ai meta caratteri
  • \wè una classe di caratteri per caratteri alfanumerici (alfanumerici, senza distinzione tra maiuscole e minuscole)
  • + è la ripetizione

Maggiori informazioni:

  • Utilizzo di RegEx (Regular Expression Extractor) con JMeter
  • Perl 5 Regex Cheat sheet
AbhishekPuri Aug 18 2020 at 20:07

Utilizzare la seguente stringa per estrarre i dati utilizzando ReEx Extractor.

_data\[\"_as_csrf_token\"\] \= \"(.+?)\"\;

Come mostrato nello screenshot qui sotto

Nel caso in cui tu sia preoccupato per i dati da estrarre. Suggerirei di usarehttps://regexr.com/ Il motivo per cui preferisco questo sito è perché ti aiuta anche con il cheatsheet.

Seconda domanda, perché (. +?) Perché non qualcos'altro? Il motivo è che corrisponde a ogni tipo di testo all'interno del pattern. Non c'è bisogno di preoccuparsi dei caratteri speciali.