我有一个接受1..n项添加到购物篮的请求。默认请求有一个“item”元素与一些子元素,我想添加N的项目与子元素我可以添加项目父元素使用creaeElementNS现在我想添加子元素“项目”就像下面,可以有人一些线索这如何使用groovy脚本动态地将SOAP元素中的子元素添加到SOAP请求中
<basket:item>
<basket:itemId>222</basket:itemId>
<basket:itemCode>DEF</basket:itemCode>
<basket:item>
Groovy脚本
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder("createBasket#Request")
def parentnode = holder.getDomNode("//basket:createBasketRequest")
def basketTotal= holder.getDomNode("//basket:itemsTotal")
def itemsTag = requestDoc.createElementNS(parentnode.getNamespaceURI(), "item")
parentnode.insertBefore(itemsTag , basketTotal)
holder.updateProperty()
电流输出
<basket:createBasketRequest>
<basket:item>
<basket:itemId>111</basket:itemId>
<basket:itemCode>ABC</basket:itemCode>
</basket:item>
<basket:item>
</basket:item>
<basket:itemsTotal>500.00</basket:itemsTotal>
</basket:createBasketRequest>
所需的输出
<basket:createBasketRequest>
<basket:item>
<basket:itemId>111</basket:itemId>
<basket:itemCode>ABC</basket:itemCode>
</basket:item>
<basket:item>
<basket:itemId>222</basket:itemId>
<basket:itemCode>DEF</basket:itemCode>
<basket:item>
<basket:itemsTotal>500.00</basket:itemsTotal>
</basket:createBasketRequest>
编辑:我使用的soapUI和测试用例的选择,有一个GroovyScript步骤之前加入篮请求步骤,Groovy脚本编制实际发送请求,例如前加篮要求,如果我的测试用例提及1个项目它应该请求默认的一个项目,所以我不必担心添加另一个项目元素,但是当我的测试用例说2个项目时,我必须创建第二个项目元素(以及子元素)并使用groovy脚本准备添加篮子请求步骤之前实际发送添加购物篮请求
感谢您的回复,得到了一个快速的样子(无论如何,我会尝试一些更多的选择)groovy.lang.MissingMethodException:没有方法的签名:org.apache.xmlbeans.impl.store.Xobj $ ElementXobj.insertBefore()适用于参数类型:(groovy.util.Node,org.apache.xmlbeans.impl.store.Xobj $ ElementXobj) – StaleElementException
@StaleElementException对,找到[显示可能的解决方案的另一页](http://techdiary.bitourea.com/2013 /06/soapui-inserting-external-xml-node.html),并更新了我的答案...手指划过;-) –
几乎只是面临命名空间的问题,我试图解决它们,感谢您的帮助 – StaleElementException