jMeter - Wert aus Variable extrahieren

Aug 17 2020

Ich verwende jMeter, um einen Stresstest einer Website durchzuführen. Ich muss den Wert einer Variablen an die nächste Anforderung übergeben.

Der Wert kann im Antworttext wie folgt angezeigt werden:

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

Wie soll ich den Regular Expression Extractor verwenden, um diesen Wert zu erhalten?

Antworten

UBIKLOADPACK Aug 17 2020 at 15:13

Am einfachsten ist es, den Boundary Extractor zu verwenden:

Links einstellen auf:

data ["_ as_csrf_token"] = "

Und richtig zu:

";

Wenn Sie den Regex-Extraktor verwenden möchten, verwenden Sie:

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

DmitriT Aug 17 2020 at 23:04

Der relevante reguläre Ausdruck wäre:

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

Demo:

  • Sie müssen entkommen Meta - Zeichen zuerst
  • \wist eine Zeichenklasse für Wortzeichen (alphanumerisch, ohne Berücksichtigung der Groß- und Kleinschreibung)
  • + ist die Wiederholung

Mehr Informationen:

  • Verwenden von RegEx (Regular Expression Extractor) mit JMeter
  • Perl 5 Regex Spickzettel
AbhishekPuri Aug 18 2020 at 20:07

Verwenden Sie die folgende Zeichenfolge, um die Daten mit ReEx Extractor zu extrahieren.

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

Wie im folgenden Screenshot gezeigt.

Falls Sie sich Sorgen über die zu extrahierenden Daten machen. Ich würde vorschlagen, zu verwendenhttps://regexr.com/ Der Grund, warum ich diese Seite bevorzuge, ist, dass sie dir auch beim Cheatsheet hilft.

Zweite Frage, warum (. +?) Warum nicht noch etwas? Der Grund ist, dass es mit jeder Art von Text innerhalb des Musters übereinstimmt. Sie müssen sich keine Sorgen um die Sonderzeichen machen.