2017-02-10 10 views
1

Ich führe einige JMeter-Tests zur Bearbeitung eines Feldes durch. Wenn ich den JMeter HTTP (S) Testskript-Rekorder verwende, kann ich eine genaue Darstellung der Seite und der Bearbeitungen erhalten, die ich gemacht habe.JMeter - Sie müssen POST-Daten senden, aber ich möchte nur ein einzelnes Feld ändern

Es erstellt eine HTTP-POST-Anfrage mit einem Parameter für jedes Feld, Kontrollkästchen und Dropdown auf der Seite. Es interessiert mich nur sehr, EINE davon zu ändern.

Mein Problem ist, dass ich nicht einfach alle anderen Parameter aus den POST-Daten entfernen kann, weil die Seite dies so interpretiert, als ob ich sie alle von der Seite entfernt hätte (und dann klagt, dass Daten fehlen). Ich muss also die aktuellen Werte für die verbleibenden bearbeitbaren Felder und Kontrollkästchen abrufen, damit ich sie erneut senden kann, wenn ich nur ein einzelnes Feld ändern möchte.

Für ein Beispiel, stellen Sie sich vor, dass ich einige Benutzerdaten mit Feldern für Name, E-Mail und Adresse übergebe. Ich möchte den Namen ändern, indem ich eine 1 an das Ende davon addiere und die anderen beiden Felder so belassen wie sie sind.

Meine Gedanken um dies zu erreichen:

1) Verwendung von XPath, um zu versuchen, die Werte auf der Seite angezeigt zu bekommen, speichern sie alle in Variablen und wieder legt sie in der Post-Anforderung. Dies ist unordentlich und auch sehr schwierig, da die Seite in einem Popup-Fenster angezeigt wird, was die Komplexität erhöht.

2) Fragen Sie die Datenbank nach allen Informationen ab und reichen Sie sie erneut ein. Scheint wie viel Overhead, und die Daten sind nicht frei verfügbar. Ich würde lieber nicht versuchen, dies zu tun.

3) Verwenden Sie ein anderes Element von JMeter Ich bin mir nicht bewusst, die spezifischen Elementdaten von der Seite zu erhalten. Vielleicht habe ich einen Zuhörer, den ich noch nicht herausgefunden habe? Wenn ich die Parameter von der Seite abrufen und sie speichern könnte, wäre das sehr praktisch.

4) Irgendwie senden Sie eine POST-Anfrage mit nur einem Feld und geben an, dass ich die restlichen Felder nicht löschen möchte, ich möchte sie nur in Ruhe lassen. Ich werde frei zugeben, dass ich mit Web-Anwendungen nicht besonders vertraut bin, so dass es einen sehr offensichtlichen Grund dafür geben kann, warum dies nicht möglich ist (oder davon abhängt, wie es durch das Back-End der Anwendung gehandhabt wird).

Gedanken?

Antwort

0

Aus dem gesamten Post, ich verstehe, dass Sie ein Feld parametrisieren, wo jedes Mal anderen Wert übergeben wird.

Wenn mein Verständnis korrekt ist, liegt die Antwort in CSV Dataset Config, wo Sie die Werte aus einer CSV-Datei übergeben können.

Von Ihrem Beispiel:

Ein Beispiel stelle ich mir einige Benutzerdaten mit Feldern für Name, Email und Adresse bin einreichen. Ich möchte durch Zugabe eines 1 bis das Ende davon den Namen ändern und die beiden anderen Felder lassen, wie sie sind

Um dies zu erreichen:

Schritte zum folgt:

  1. erstellen eine CSV-Datei.Füllen Sie die Namen wie folgt: names name1 name2 name3 name4
  2. names ist die Spaltenüberschrift und verbleibenden sind Werte.
  3. Fügen Sie CSV Dataset Config zu Ihrem Testplan hinzu.
  4. Geben Sie den Dateipfad an.
  5. Ersetzen Sie den Wert im Namensfeld in HTTP Post Anfrage als ${names}. das ist es.
+0

Leider kenne ich die Werte nicht im Voraus. Ich muss die Seite laden, alle Werte abrufen, die bereits auf der Seite vorhanden sind, eine davon ändern und sie alle erneut absenden. – Jer

+0

Dann korrelieren Sie nur die Werte mit 'Regular Expression Extractor', was Ihnen erlaubt, Regex auf die Antwort anzuwenden und den benötigten Wert in eine Variable (say id) zu capturen. Später können Sie den Variablennamen verwenden, um den Wert zu ersetzen wurde gesendet. Bitte suchen Sie Google für Jmeter Korrelation, finden Sie viele Links zu erreichen. –

+0

Das klingt gut und würde wahrscheinlich in den meisten Fällen funktionieren. Leider sind in meinen Einstellungen die Daten in diesen Feldern kein Text. In diesem Setup beginnen Sie mit der Eingabe und es wird eine Auswahlliste basierend auf Ihrer Eingabe angezeigt. Wenn Sie auf eins klicken, wird es zu einer Art Schaltfläche. Innerhalb des HTML gibt es einfach eine "", false) });