2012-10-30 8 views
7

Ho problemi con l'utilizzo di MockOperation Editor in Soap UI.Come utilizzare Query_Match per SoI UI

ho avuto questa richiesta:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body> 
    <methodName xmlns="http://tempuri.org/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
     <dataAreaId>error</dataAreaId> 
     <pInvoiceList> 
     <dataAreaId>NOTTHESAME</dataAreaId> 
     ... 
     </pInvoiceList> 
    </methodName> 
    </s:Body> 
</s:Envelope> 

ho provato quasi ogni espressione XPath ma ho sempre ottenere "Missing partita a richiesta"

Cosa compilare la casella Xpath?

ho provato:

  • // dataAreaId/text()
  • // dataAreaId/
  • // dataAreaId
  • /dataAreaId/text()
  • /dataAreaId
  • /methodName/dataAreaId/text()
  • /methodName/dataAreaId/
  • /nomeMetodo/dataAreaId
+0

Vuoi il nodo, tutti i nodi con quel nome, o semplicemente il testo nel nodo? Inoltre, XPath che termina con '/' non è valido. – JWiley

+0

Voglio il testo del primo – amaters

risposta

11

finalmente sono riuscita a farlo basa sulla risposta da user1740631

Sembra che aveva a che fare con i namespace dopotutto.

la correttezza della sintassi:

+0

Sì, era così. Piuttosto fastidioso che il loro sito web non dia questo suggerimento. Il mio risultato XML non conteneva prefissi namespace, ma richiedeva comunque che io crei uno spazio dei nomi virtuale come suggerito sopra. – djangofan

4

scrittura come questo

per primi uno

// nomeMetodo [1]/dataAreaId [1]

Per seconda

// methodName [1]/pInvoiceList [1]/dataAreaId [1]

* Se si dispone di più nodi con lo stesso nome in Xml, allora dovresti usare i numeri per localizzare quel particolare nodo.

+0

Ho provato questo. Ancora senza risultato. Può essere a causa di spazi dei nomi mancanti o sto suggerendo qualcosa di veramente stupido qui? – amaters

+1

dovresti sempre definire lo spazio dei nomi prima di scrivere xpath ..... – pshekhar

0

C'è un buon suggerimento: Quando si definisce un asserzione per un Testcase (o forse anche nel Mock-finestra) c'è un pulsante "Declare" sopra il XPath-Expression -Campo. Non sembra proprio un pulsante, finché non lo puntate con il puntatore del mouse, quindi non me ne sono reso conto all'inizio.

Basta fare clic sul pulsante un SoapUI (in realtà io uso 5.2.1) aggiungerà le dichiarazioni di dichiarazione per te, che è possibile utilizzare.

Ho trovato questa caratteristica per coincidenza, in quanto non è realmente visibile. Forse questo può aiutare anche ...

2

Se non si cura di spazi dei nomi che è possibile utilizzare la seguente sintassi:

XPath1.0

//*[local-name() = 'methodName']/*[local-name() = 'dataAreaId'][1] 

XPath2.0

//*:methodName/*:dataAreaId[1]