2017-11-20 9 views
0

みんな! SOAPUI 5.2.1とGroovy テストケースを使用してgroovyでcontext.expandを使って子ノードを取得する方法は?

は2つのテストステップました:

<soapenv:Envelope ... > 
<soapenv:Header/> 
<soapenv:Body> 
    <ban:transactions> 
    <session>x</session> 
    <type>y</type> 
    </ban:transactions> 
</soapenv:Body> 
</soapenv:Envelope ... > 

  1. SOAPリクエストはリクエストインサイド
  2. のGroovyスクリプト

"を作成します"

スクリプト内:

def xml = context.expand('${create#request#//ban:transactions}') 

このスクリプトを返します:

<ban:transactions> 
    <session>x</session> 
    <type>y</type> 
    </ban:transactions> 

そのスクリプトが私を返すことができるので、私は、スクリプトで何を変更する必要があります。

<session>x</session> 
    <type>y</type> 
+0

を持っているステップの名前でtestStepNameを変更する必要がありますあなたは達成しようとしていますか?そのデータをどのように使用するのですか? – Rao

+0

@Rao、私はその子ノードが必要です。なぜなら、それは異なる親タグを持つ反復変換と比較するつもりです - ではなく、

+0

あなたはある応答を別の応答と比較していますか?ユースケースは何ですか? – Rao

答えて

0

は、あなたのXMLがあるとし、我々は下のデータを抽出しますノード本体

<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
<Body> 
<hello>oye1</hello> 
<ok>test</ok> 
<hello>oye2</hello> 
<ok>test2</ok> 
</Body> 
</Envelope> 

以下のgroovyコードはノードを抽出できますその上のノードを指しているxmlから。そこでここでは、タグの下のノードを抽出しようとしている

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 
def holder = groovyUtils.getXmlHolder("testStepName#Response") 
def responseXml=holder.getXmlObject() 
String xmlObj=responseXml.toString() 
String [] responseXmlObj=xmlObj.split('<Body>')[1].split('</Body>') 
log.info responseXmlObj[0] 

は何の出力が

Thu Nov 23 12:38:05 GMT+05:30 2017:INFO: 
<hello>oye1</hello> 
<ok>test</ok> 
<hello>oye2</hello> 
<ok>test2</ok> 

と来るあなたが応答

+1

ありがとうございました。 私はこの方法を知っていましたが、context.expandとxpathを使用する方が短いと考えました... –

+0

答えとしてマークしてくれてありがとう。あなたもそれをupvoteことがあります。特定のレベルに達すると表示されます –

関連する問題