Ho una richiesta che accetta gli elementi 1..n da aggiungere al carrello. la richiesta di default ha un elemento "item" con alcuni elementi figlio, voglio aggiungere N no di elementi con elemento figlio sono in grado di aggiungere elemento elemento Item usando creaeElementNS ora voglio aggiungere elementi figlio a "elemento" come segue, può qualcuno far luce su questo script GroovyCome aggiungere gli elementi figlio dinamicamente alla richiesta SOAP in SOAPUI utilizzando lo script groovy
<basket:item>
<basket:itemId>222</basket:itemId>
<basket:itemCode>DEF</basket:itemCode>
<basket:item>
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()
corrente di uscita
<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>
uscita desiderata
<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>
EDIT: sto usando l'opzione soapUI e TestCase, c'è un passo GroovyScript prima di aggiungere richiesta cestino passo, di script Groovy prepara aggiungere richiesta cestino prima di inviare richiesta, ad esempio se il mio testcase menziona 1 elemento che dovrebbe richiedere con un elemento predefinito quindi non ho problemi ad aggiungere un altro elemento Item, ma quando il mio testcase dice 2 elementi devo creare elementi secondo elemento (insieme a elementi figlio) e preparare la richiesta di aggiungere il cestino usando lo script groovy passo prima di inviare effettivamente la richiesta del carrello aggiuntivo
Grazie per la risposta, ha avuto un rapido sguardo ottenuto (comunque proverò ancora alcune opzioni) groovy.lang.MissingMethodException: Nessuna firma del metodo: org.apache.xmlbeans.impl.store.Xobj $ ElementXobj.insertBefore() è applicabile per tipi di argomenti: (groovy.util.Node, org.apache.xmlbeans.impl.store.Xobj $ ElementXobj) – StaleElementException
@StaleElementException Destra, trovato [un'altra pagina che mostra una possibile soluzione] (http://techdiary.bitourea.com/2013 /06/soapui-inserting-external-xml-node.html), e ho aggiornato la mia risposta ... Incrocio le dita ;-) –
quasi lavorando di fronte a problemi con gli spazi dei nomi, sto cercando di risolverli, grazie per l'aiuto – StaleElementException