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("//xmlns:SabreCommandLLSRQ/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("//xmlns:SabreCommandLLSRS/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
Highlighted
Occasional Contributor

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.

 

View solution in original post

6 REPLIES 6
Highlighted
Community Hero

Difficult to comment without respective data.


Regards,
Rao.
Highlighted
Occasional Contributor

Hi Rao,

Which kind of data you need.

 

Thanks,

Dinesh

Highlighted

To validate the xpath you were using are correct.


Regards,
Rao.
Highlighted
Occasional Contributor

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

Highlighted
Occasional Contributor

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.

Highlighted
Occasional Contributor

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.

 

View solution in original post

New Here?
Join us and watch the welcome video:
Announcements
Top Kudoed Authors