2017-04-11 17 views
-1

我已經編寫了下面的代碼,用於從Excel動態讀取值,從SOAP UI調用Web服務並將響應標記之間的值寫入Excel。從我的Web服務,如圖閱讀Web服務響應並使用SOAP在Groovy腳本中寫入Excel

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或提取數據並將其創建爲所需的格式?你有什麼困難?而不是圖像,你可以編輯問題並粘貼響應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