cancel
Showing results for 
Search instead for 
Did you mean: 

Groovy script query

SOLVED
Highlighted
Occasional Contributor

Groovy script query

I have a groovy script to capture a log and the same is working fine means the logs capture properly however if run the groovy only then getting "org.apache.xmlbeans.xmlexception.error.unexpected element.CDATA error at line 57."

 

Below is my code :

 

import com.eviware.soapui.support.GroovyUtils
import com.eviware.soapui.support.XmlHolder
import jxl.*;
import jxl.write.*
import org.apache.commons.lang.StringUtils

def Time = new Date().format("dd-MMM-yyyy h_mm_ss a")
def directory = testRunner.testCase.testSuite.project.getPropertyValue("Logs")
File fold = new File (directory)
fold.mkdir ()

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)

//Project Name:
def ProjectName=testRunner.testCase.testSuite.project.name

//TestSuite Name:
def TestSuiteName=testRunner.testCase.testSuite.name

//Test Case Name:
def TestCaseName=testRunner.getTestCase().getName()

//Creating File
def responseFile = new File (directory,TestCaseName+"_${Time}"+".doc")

def TestCaseDescription = testRunner.testCase.getDescription()
responseFile.append ("Project Name :${ProjectName}\n\n")
responseFile.append ("TestSuite Name :${TestSuiteName}\n\n")
responseFile.append ("TestSuite Name :${TestCaseName}\n\n")

//def testCaseCount = testRunner.testCase.testSuites[TestSuiteName].getTestCaseCount()

def count = testRunner.testCase.getTestStepCount()

for (i=1;i<count;i++){

def StepName = testRunner.testCase.getTestStepAt(i).getName()

if (StepName.toString()== "Property Transfer" ||
StepName.toString()== "Delay" ||
StepName.toString()== "GetLineiatta" ||
StepName.toString()== "Generate Log file"||
StepName.toString()== "FlightNo"||
StepName.toString()== "LINEIATTA"||
StepName.toString()== "GetReservation"||
//StepName.toString()== "GetReservation"||
StepName.toString()== "Capture Values from GetRes"||
//StepName.toString()== "ChangePartition"||
StepName.toString()== "Partition Property"||
//StepName.toString()== "Display Airline PNR"||
StepName.toString()== "PNR*")


log.info StepName

else{
def RQHolder = groovyUtils.getXmlHolder(StepName.toString()+"#Request")
RQHolder.namespaces["xmlns"] = "http://webservices.sabre.com/sabreXML/2003/07"
def nodeRQ = RQHolder.getNodeValue("//xmlnsSmiley FrustratedabreCommandLLSRQ/xmlns:Request/xmlns:HostCommand")

def RSholder = groovyUtils.getXmlHolder(StepName.toString()+"#Response")
RSholder.namespaces["xmlns"] = "http://webservices.sabre.com/sabreXML/2003/07"
def nodeRS = RSholder.getNodeValue("//xmlnsSmiley FrustratedabreCommandLLSRS/xmlns:Response")

def Name = testRunner.testCase.testSuite.getName()
responseFile.append (context.expand(StepName.toString()+ " : ${nodeRQ}\n"))
responseFile.append (context.expand(StepName.toString()+ " : ${nodeRS}\n\n"))
}
}

1 ACCEPTED SOLUTION

Accepted Solutions
Occasional Contributor

Re: Groovy script query

Hallo All,

 

Got solution for this issue. The problem persists in my groovy scripts If statement. I am passing a lot of unnecessary step names in If statement and those step names are already identified by groovy because of which the CDATA error is occurring. I have removed the unwanted step names from if statement and re-run the script and the same is working fine.

 

Example Elaborated : 

 

in my test case below are the steps : 

1. Click Login

2. enter user name

3. enter password

4. Delay (Wait)

5. click on submit

To capture log of all these steps I have the above given groovy script and in that, I have added If condition to capture the step names. Groovy script is able to understand the normal soapui steps but if we have "Delay, Property Transfer, Run testcase" etc then soap is unable to capture the steps hence the If condition is written to capture these steps and in that If condition added few step names which are not there and due to which the CDATA error is occurring.

 

6 REPLIES 6
Community Hero

Re: Groovy script query

Difficult to comment without respective data.


Regards,
Rao.
Occasional Contributor

Re: Groovy script query

Hi Rao,

Which kind of data you need.

 

Thanks,

Dinesh

Community Hero

Re: Groovy script query

To validate the xpath you were using are correct.


Regards,
Rao.
Occasional Contributor

Re: Groovy script query

Hi Rao,

 

As I am not that much expert could you please elaborate the previous comment. As i cant see any xpath in my script or may be i misunderstood your comment.

 

Thanks,

Dinesh

Occasional Contributor

Re: Groovy script query

Hello Rao and Smartbear Support Team, Could you please check my concern and advise.

I have tried allot and just find out that the error is with CDATA and on the line where I am fetching the request and response name of my XMLs.

Occasional Contributor

Re: Groovy script query

Hallo All,

 

Got solution for this issue. The problem persists in my groovy scripts If statement. I am passing a lot of unnecessary step names in If statement and those step names are already identified by groovy because of which the CDATA error is occurring. I have removed the unwanted step names from if statement and re-run the script and the same is working fine.

 

Example Elaborated : 

 

in my test case below are the steps : 

1. Click Login

2. enter user name

3. enter password

4. Delay (Wait)

5. click on submit

To capture log of all these steps I have the above given groovy script and in that, I have added If condition to capture the step names. Groovy script is able to understand the normal soapui steps but if we have "Delay, Property Transfer, Run testcase" etc then soap is unable to capture the steps hence the If condition is written to capture these steps and in that If condition added few step names which are not there and due to which the CDATA error is occurring.

 

New Here?
Join us and watch the welcome video:
Join the exciting event
SeptemberHubBub
Top Kudoed Authors
Join the September Hub-bub to show off, learn and win