2017-03-13 4 views
0

Ich habe Mühe, Lösung zu Jmtere dynamische Eingabewert, die einen übereinstimmenden Wert, aber mit den Sub-Strings zurückgeben.Jmeter Regulärer Ausdruck

</script></span><input type="hidden" name="j_id_s_1_SUBMIT" value="1" /><input type="hidden" name="javax.faces.ViewState" id="j_id__v_0:javax.faces.ViewState:1" value="07JgPgLP3e1jdtHd6s1UxDoKEaCU362MYbfU48r9paGrBDfo" autocomplete="off" /></form> 

ich versuche, "07JgPgLP3e1jdtHd6s1UxDoKEaCU362MYbfU48r9paGrBDfo" diesen Wert zu erhalten. i reuslar Ausdruck:

j_id_s_1_SUBMIT" value="(.+)" 

Verweisname: view

Es gibt:

Match count: 1 
Match[1][0]=j_id_s_1_SUBMIT" value="1" /><input type="hidden" name="javax.faces.ViewState" id="j_id__v_0:javax.faces.ViewState:1" value="07JgPgLP3e1jdtHd6s1UxDoKEaCU362MYbfU48r9paGrBDfo" autocomplete="off" 
Match[1][1]=1" /><input type="hidden" name="javax.faces.ViewState" id="j_id__v_0:javax.faces.ViewState:1" value="07JgPgLP3e1jdtHd6s1UxDoKEaCU362MYbfU48r9paGrBDfo" autocomplete="off 

ich versuchte ${__substring(${view}, 101, 149)}, mein Skript noch scheitern. Irgendwelche anderen Lösungen? Dank

+1

Bitte besuchen Sie Ihre Frage ein und Verwendung die Schaltfläche Bearbeiten, um den Code hervorzuheben.Ab jetzt bleibt unklar, was Sie wollen. – Jan

Antwort

1

Einfach Don't use regular expressions to parse HTML, eine kleine Markup-Änderung, Hinzufügen oder Ersetzen eines Attributs, Rendering eines Teils des Tags in der nächsten Zeile, was auch immer und dein Test ist ruiniert.

Sie haben:

  • XPath Extractor, relevant XPath-Abfrage so einfach sein wird als //input[@name='javax.faces.ViewState']/@value
  • CSS/JQuery Extractor, Auswahl input[name=javax.faces.ViewState] sein wird, verwenden value als Attribut
1
name="j_id_s_1_SUBMIT"\svalue="(.+?)"\s/> 

, wenn Sie sagen, dass es nicht nach dem ersten Spiel zu stoppen (die ? nach .+ ist), es wird dauern als weitgehend passende Keywords, wie möglich - und das ist, was passiert ist.

PS Aber das folgt Ihrem Ausdruck, während Sie dabei 1 erhalten, nicht das Token, das Sie benötigt hätten. dann

Also, Ihre Sachen zu erhalten, sollten Sie besser

tun
id="j_id__v_0:javax\.faces\.ViewState:1"\svalue="(.+?)"\sautocomplete 

PPS Ihre html scheinen gut ausgebildet werden, warum nicht XPath-Extraktor verwenden? Sie wären dann nicht abhängig von der Reihenfolge der Attribute und/oder der Gesamtstruktur von HTML in Ihrer Antwort.

PPPS Und hier ist noch besser Trick direkt von den offiziellen JMeter doc:

Hinweis: Obwohl der obige Ausdruck funktioniert, ist es effizienter ist den folgenden Ausdruck zu verwenden: name = "file" value =“ ([^ "] +)"> where [^ "] - bedeutet, dass alles passen außer" In diesem Fall kann der passende Motor aufhören zu suchen, sobald es den ersten sieht ", während im vorherigen Fall der Motor hat um zu überprüfen, ob es "> statt zu sagen"> gefunden hat.

RTFM ist immer noch trendy, oder? :-)

+0

Danke. Rally geschätzt! – Enwar

+0

Danke. Rally geschätzt! Jetzt gibt es mir den richtigen Wert, ich versuche, Adresse in meiner Anwendung zu aktualisieren, und submit, legte ich den Viewstate-Wert, aber es wirft immer noch 500 Fehler, sollte ich auch anderen Wert verwenden? wenn ich Blazemeter record verwende, gibt es mir diesen Wert ViewSate = 4bAuxA6j/nZjdtHd6s1UxM75jfae6h2OwGJvRZZXY8I7wK1Q danke, für die Antwort. – Enwar