首页 > 解决方案 > 从 jMeter 中的 SOAP 请求中删除空组

问题描述

我需要预处理使用 jMeter 中的 CSV 数据集填充的 SOAP 请求(使用 HTTP 请求)。一些绑定变量是预期的空值,但我正在测试的服务也会对这些元素执行验证。

过去有一个类似的问题(JMeter - Remove empty elements in SOAP request),但在我的情况下,我不想只清除我想清除整个块的空白元素。

示例:我想要这个

<table>
    <name>businessLicenceGroup</name>
    <tableRow>
        <sequence>1</sequence>
        <field>
            <sequence>0</sequence>
            <name>authority</name>
            <value>AD01</value>
        </field>
        <field>
            <sequence>1</sequence>
            <name>licenceNumber</name>
            <value></value>
        </field>
    </tableRow>
</table>

成为

<table>
    <name>businessLicenceGroup</name>
    <tableRow>
        <sequence>1</sequence>
        <field>
            <sequence>0</sequence>
            <name>authority</name>
            <value>AD01</value>
        </field>
    </tableRow>
</table>

标签: soapjmeter

解决方案


查找空对象并删除其父节点的参考代码将类似于:

def before = prev.getResponseDataAsString()
log.info('Before: ' + before)
def xml = new groovy.util.XmlParser().parseText(before)
def nodesWithoutText = xml.'**'.findAll { it.name() && !it.text() }
def removeNode = { node ->
    def field = node.parent()
    def tableRow = field.parent()
    tableRow.remove(field)
}
nodesWithoutText.each{removeNode(it)}
log.info('After: ' + groovy.xml.XmlUtil.serialize(xml))

上面的代码假定您的示例 XML 来自Sampler的响应,需要放入JSR223 PostProcessor

演示:

在此处输入图像描述

参考:


推荐阅读