我有一個接受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