首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sopaUI中使用Groovy脚本-将XML的内容复制到另一个(试图克隆SOAP请求测试步骤)

在sopaUI中使用Groovy脚本-将XML的内容复制到另一个(试图克隆SOAP请求测试步骤)
EN

Stack Overflow用户
提问于 2012-07-24 07:08:47
回答 1查看 3.6K关注 0票数 0

我是一名新手,负责编写优秀的脚本,并寻求您的帮助,以找到我目前面临的问题的解决方案。

我的要求是,在基于测试数据输入的每次迭代中,我必须从SoapRequest中删除特定的节点或特定的节点。为了实现这一点,我创建了两个相同的SOAP请求-Original并进行了修改。

使用groovy脚本,在每次迭代之后,我尝试用原始soap请求的内容恢复修改后的soap请求的内容。(迭代1-删除is的节点和删除的第二个迭代节点保持-这就是用原始内容恢复请求的原因)。换句话说,希望克隆soap请求,以便可以对克隆的请求执行delete节点操作,保持原始请求不变。

下面是我在TestSuite下的测试步骤。

数据源原始(SoapRequest) Groovy脚本。改良(SoapRequest)

SoapRequest (原件)

代码语言:javascript
复制
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">
   <soapenv:Header/>
   <soapenv:Body>
      <idm:request>
         <idm:dataset-searches>
            <idm:profile-name></idm:profile-name>
         </idm:dataset-searches>
         <idm:individual-name>
            <idm:family-name>ABC</idm:family-name>
            <idm:first-given-name>DEF</idm:first-given-name>
         </idm:individual-name>
         <idm:date-of-birth>1985-12-12</idm:date-of-birth>
      </idm:request>
   </soapenv:Body>
</soapenv:Envelope>

我的Groovy脚本如下所示

代码语言:javascript
复制
def grUtils = new com.eviware.soapui.support.GroovyUtils(context)
def ReqHolder2 = grUtils.getXmlHolder("Modified#Request")

ReqHolder2.removeDomNodes("//idm:request")
ReqHolder2.updateProperty()

ReqHolder2 ["//soapenv:Body"] = context.expand( '${Original#Request#//idm:request}' )
ReqHolder2.updateProperty()

当我执行上面的groovy脚本时,修改后的请求将使用原始请求中的内容进行更新,但是使用CDATA和对模式的引用。

SoapRequest (改性)

代码语言:javascript
复制
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">
   <soapenv:Header/>
   <soapenv:Body>***<![CDATA[<idm:request xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">***
         <idm:dataset-searches>
            <idm:profile-name/>
         </idm:dataset-searches>
         <idm:individual-name>
            <idm:family-name>ABC</idm:family-name>
            <idm:first-given-name>DEF</idm:first-given-name>
         </idm:individual-name>
         <idm:date-of-birth>1985-12-12</idm:date-of-birth>
      </idm:request>**]]>**</soapenv:Body>
</soapenv:Envelope>

如果有人能帮我这个忙,我会非常感激的。另外,我很高兴知道/学习groovy中实现这一需求的其他替代方法。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-24 07:20:08

考虑阅读Groovy、XmlSlurperXmlParser。它们的实现非常简单,您可以将它们用于xml操作。但是,对于您的特定需求,使用XmlParser会更有意义。

这里有一个不同的问题和我的回答,只是为了帮助您了解XMLParser是如何工作的

因为您的问题更多是关于删除节点,而不是访问/验证节点。下面是一个关于使用其他问题删除节点的XMlParser。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11625796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档