JMeter自定义soap采样器以使用变量

JMeter自定义soap采样器以使用变量,soap,groovy,jmeter,Soap,Groovy,Jmeter,我在JMeter中使用自定义SOAP采样器发送SOAP请求 <soapenv:Envelope> <soapenv:Header/> <soapenv:Body> <ser:${myvar}Upload> ... </ser:${myvar}Upload> </soapenv:Body> </soapenv:Envelope> 添加JSR223预处理器并使用 对于xml

我在JMeter中使用自定义SOAP采样器发送SOAP请求

<soapenv:Envelope>
   <soapenv:Header/>
   <soapenv:Body>
      <ser:${myvar}Upload>
...
      </ser:${myvar}Upload>
   </soapenv:Body>
</soapenv:Envelope>

添加JSR223预处理器并使用

对于xml,脚本将具有以下形式:

import groovy.xml.*

def builder = new StreamingMarkupBuilder()
builder.encoding = 'UTF-8'
def yourCustomElement = vars.get("myvar") + "Upload" // myvar is a saved variable in previous step

def Envelope = builder.bind {
    mkp.xmlDeclaration()
    namespaces << [soapenv:'http://schemas.xmlsoap.org/soap/envelope/']  // Or mkp.declareNamespace('soapenv':'http://schemas.xmlsoap.org/soap/envelope/')
    soapenv.Envelope() {
        soapenv.Header(){}
        soapenv."${yourCustomElement}"() {
        }
    }
}

vars.put("myXML", XmlUtil.serialize(Envelope));
log.info("\n" + vars.get("myXML"))
输出:

2019/02/25 17:13:51 INFO  - jmeter.modifiers.JSR223PreProcessor: 
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:TestUpload/>
</soapenv:Envelope>
试用
2019/02/25 17:13:51 INFO  - jmeter.modifiers.JSR223PreProcessor: 
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:TestUpload/>
</soapenv:Envelope>