Extrahieren von xml-node-Inhalt ohne Knoten selbst in variable in jmeter
In meinem JMeter Szenario, ich bin das testen von SOAP-webservices. Ich senden der ersten Anfrage an webservice-S1 und verwenden Sie dann Antwort von ihm zu bauen, die Anfrage zu S2.
Die Antwort von S1 kommt in der form:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<s:response xmlns:s="http://custom.namespace.com/namespace">
...
<s:responseDetails>
<s:detail1>some info</s:detail>
<s:detail2>another info<s:detail2>
...
</s:responseDetails>
</s:response>
</soap:Body>
</soap:Envelope>
Ich alles in <s:responseDetails>
zu bauen, die Anfrage zu S2, aber verpackt in verschiedenen xml-element:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s="http://custom.namespace.com/namespace">
<soap:Body>
<s:request>
<s:details>
<s:detail1>some info</s:detail>
<s:detail2>another info<s:detail2>
...
</s:details>
</s:request>
</soap:Body>
</soap:Envelope>
Beachten element <s:details>
im Antrag statt <s:responseDetails>
.
Begann ich mit XPath extractor in der Hoffnung zu verwenden XPath-Ausdruck, um alles unter <s:responseDetails>
tag in JMeter variable:
//*[local-name()='responseDetails']/node()
- gibt mir eine Reihe von JMeter Variablen mit verschiedenen Kinder<s:responseDetails>
, während ich will, dass Sie in eine variable//*[local-name()='responseDetails']
- gibt mir der gesamte Knoten<s:responseDetails>
die ich nicht verwenden kann, weil die Anwesenheit von root-tag<s:responseDetails>
, die muss ich ersetzen mit<s:details>
Was ist der richtige Ausdruck, um alles, was im inneren <s:responseDetails>
in variable, so dass ich später nutzen kann,
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s="http://custom.namespace.com/namespace">
<soap:Body>
<s:request>
<s:details>
${details}
</s:details>
</s:request>
</soap:Body>
</soap:Envelope>
Oder vielleicht gibt es einen anderen Weg um mein problem zu lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgendes tun:
1) Hinzufügen XPath Extractor wie Sie es mit:
2) Fügen Sie einen Beanshell Sampler mit:
3) verwenden : ${modifiedFragment}
Beachten Sie, dass Beanshell sampler leicht verringern JMeter Leistungen, aber es sollte angemessen sein.
Beachten Sie, dass Sie können ersetzen Beanshell sampler mit JSR 223 mit groovy zugrunde liegenden Sprache und Schrift in einer externen Datei.
Mit JMeter > 2.7 version, die Leistungen werden besser als beanshell Lösung, weil die neue version von JMeter führt einen neuen caching-Mechanismus, der "compile" - Groovy-Skript und machen es fast so effizient wie die Java-Klasse.
Ab 3. september 2012, dieser Mechanismus ist in JMeter Nightly-build.
JMeter Testplan Beispiel:
Einen anderen Weg:
1) Hinzufügen XPath Extractor wie Sie es mit:
2) Fügen Sie einen Beanshell Sampler mit:
3) verwenden Körper
Dies ist ein wenig sauberer, da es keine Ersatz
Könnte Sie weglassen
<s:details>
tag und senden die Anfrage wie dieser:<s:details>
reagiert und Sie sind verpackt in<s:responseDetails>