2017-04-11 8 views
-1

Excelから動的に値を読み込み、SOAP UIからWebサービスを呼び出し、応答タグ間の値をExcelに書き込むためのコードを書きました。示されている私のWebサービスからのWebサービスの応答とGroovyスクリプトでのExcelへの書き込み(SOAPを使用)

import jxl.*; 
import jxl.read.biff.BiffException; 
import jxl.write.*; 

def reqOperationName = "TestRequest"; 
def inputDataFileName = "Automate/SampleData.xls"; 
def inputDataSheetName = "sendSampleData"; 
log.info("Service Testing Started")  
Workbook workbook = Workbook.getWorkbook(new File(inputDataFileName)); 
WritableWorkbook copy = Workbook.createWorkbook(new File(inputDataFileName),workbook); 
    WritableSheet sheetl = copy.getSheet(inputDataSheetName); 

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context); 
def reqholder = groovyUtils.getXmlHolder(reqOperationName+"#Request"); 
    try{ 
     rowcount = sheetl.getRows(); 
     colcount = sheetl.getColumns(); 
     for(Row in 1..rowcount-1){ 
      for(Col in 2..colcount-1){ 
       String reqTagName = sheetl.getCell(Col,0).getContents() 
       def TagCount = reqholder["count(//*:"+reqTagName+")"] 

        if(TagCount!=0){ 
          String reqTagValue = sheetl.getCell(Col,Row).getContents() 
          reqholder.setNodeValue("//*:"+reqTagName, reqTagValue) 
          reqholder.updateProperty() 
         } 
      } 
         // To Run Test Request 
         testRunner.runTestStepByName(reqOperationName) 
     //Read Response XML 
       def resholder = groovyUtils.getXmlHolder(reqOperationName+"#Response") 

       resTagValue1 = resholder.getNodeValues("//*:message") 

       //Write Response value to Excel Sheet 
       Label resValue1 = new Label(8,Row,java.lang.String resTagValue1); 
         sheetl.addCell(resValue1); 
     }// Row loop Ends Here 
    }catch (Exception e) {log.info(e) } 
     finally{ 
      copy.write(); 
      copy.close(); 
      workbook.close(); 
     } 
log.info("Service Testing Finished") 

応答は次のとおりです。 -

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<soap:Body> 
    <Response xmlns="http://eh.dummy.com"> 
    <sets xmlns=""> 
     <sets_InnerSet xmlns="http://eh.dummy.com"> 
      <visibleSetsInnerSet> 
       <set_cd>QS1</set_cd> 
      </visibleSetsInnerSet> 
      <visibleSetsInnerSet> 
       <set_cd>QS8</set_cd> 
      </visibleSetsInnerSet> 
      <visibleSetsInnerSet> 
       <set_cd>QS9</set_cd> 
      </visibleSetsInnerSet> 
     </sets_InnerSet> 
    </sets> 
    <responseCode xmlns="">success</responseCode> 
    </Response> 
</soap:Body> 
</soap:Envelope> 

はあなたが私が私がset_CDタグから値(QS1/QS8/QS9)を読むことができる方法を知っているし、Excelに書いてみましょうくださいすることができファイルをQS1、QS8、QS9として単一のセルに格納します。

+0

問題をExcelに書き込むか、データを抽出して、それを目的のフォーマットに作成していますか?あなたの持つ難しさはどこですか? Imageではなく、質問を編集してレスポンスXMLを貼り付けることができますか? – Rao

+0

私は、必要なレスポンスのタグからデータを抽出し、目的のフォーマットで作成する際に問題に直面しています。 – Inevitable

答えて

0

下記のgroovyコードスニペットを使用して、必要な形式で目的の値を取得できます。

//Pass the xml string to parseText method below i.e., your response 
def parsedXml = new XmlSlurper().parseText(xml) 
//Get the desired value in required format 
def result = parsedXml.'**'.findAll {it.name() == 'set_cd'}.collect{it.text().trim()}.join(',') 
log.info "Desired output : $result" 

//You can use result variable to write or use anywhere you needed 

あなたが続行できるようになることを期待してすぐにオンラインDemo

これを試してみて、上記のあなたが必要なところにresultを再試行書くことができます。

+0

ありがとうございました。出来た... – Inevitable

関連する問題