soapUI groovy脚本groovy.lang.MissingMethodException

soapUI groovy脚本groovy.lang.MissingMethodException,groovy,soapui,Groovy,Soapui,当我尝试在soapUI测试步骤中解析响应时,收到以下异常。还尝试了getXMLHolder方法。还是不走运 我是否缺少导入或库 groovy.lang.MissingMethodException:没有方法的签名: java.lang.String.getNodeValue()适用于参数类型: (java.lang.String)值: [//ConversionRateResponse/ConversionRateResult]第16行出现错误 答复如下 <soap:Envelope xm

当我尝试在soapUI测试步骤中解析响应时,收到以下异常。还尝试了getXMLHolder方法。还是不走运

我是否缺少导入或库

groovy.lang.MissingMethodException:没有方法的签名: java.lang.String.getNodeValue()适用于参数类型: (java.lang.String)值: [//ConversionRateResponse/ConversionRateResult]第16行出现错误

答复如下

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <ConversionRateResponse xmlns="http://www.webserviceX.NET/">
         <ConversionRateResult>-1</ConversionRateResult>
      </ConversionRateResponse>
   </soap:Body>
</soap:Envelope>

-1

您可以将脚本断言添加到Soap请求测试步骤中

以下是脚本:

//Check if the response is not empty
assert context.response, 'Response is empty or null'

def rate = new XmlSlurper().parseText(context.response).'**'.find{it.name() == 'ConversionRateResult'}?.text() as Integer
log.info "Conversion rate result is : $rate "

//Check if the result rate is -1, change if needed
assert -1 == rate

我可以看出您使用了getNodeValue,但是在字符串上使用了这是错误的

如果您看到错误,它会说:“没有方法的签名:java.lang.String.getNodeValue()适用于参数类型:(java.lang.String)值

请参阅下面的代码,其中我们在正确的东西上使用了getNodeValue

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);
def response = groovyUtils.getXmlHolder('SOAP Request#Response')
def refNum=response.getNodeValue("//*:ConversionRateResponse//*:ConversionRateResult")
log.info refNum

getNodeValue是一个非常有用的函数,在从xml中提取价值方面会有很大帮助,类似地,我们有getDomNode用于节点而非值

能否显示响应?相应地编辑问题。提取值后是否需要进一步处理?值将保存到excel工作表OK。至少对于原始问题,提供了提取所需数据的方法,并向您展示了如何断言解决方案。请看看这能否解决问题。
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);
def response = groovyUtils.getXmlHolder('SOAP Request#Response')
def refNum=response.getNodeValue("//*:ConversionRateResponse//*:ConversionRateResult")
log.info refNum