我对Groovy&Soap UI非常陌生
我有响应XML作为
<carrierUDOResponse ReferenceId="" Result="SUCCESS" xmlns:xsi="" xsi:noNamespaceSchemaLocation="CarrierUDOReponse.xsd
<errors>
<error code="0" description="**i WANT TO ACCESS THIS**" property=""/>
</errors>
<warnings>
<warning code="0" description="" property=""/>
</warnings>
</errorsAndWarnings>
</carrierUDOResponse>
Run Code Online (Sandbox Code Playgroud)
在Groovy脚本中,我想捕获attribute的值并将其传递到下一步。我应该如何捕捉?
常规脚本如下
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holder = groovyUtils.getXmlHolder( "Create_shipment#Response" )
// loop item nodes in response message
for( item in holder.getNodeValues( "//error.code" ))
log.info "errors : [$item]"
def no = holder["count(//error)"]
Run Code Online (Sandbox Code Playgroud)
这是groovy脚本,它使用提取所需的描述属性xpath。
看起来给定的xml是局部的,并且格式不正确。
为了向您展示如何提取数据,请对您的xml片段进行一些修改。但是基本上想法是一样的。
def xml='''<carrierUDOResponse ReferenceId="" Result="SUCCESS">
<errorsAndWarnings>
<errors>
<error code="0" description="Description for code 0" property=""/>
<error code="1" description="Description for code1" property=""/>
</errors>
<warnings>
<warning code="0" description="" property=""/>
</warnings>
</errorsAndWarnings>
</carrierUDOResponse>'''
def holder = new com.eviware.soapui.support.XmlHolder(xml)
//use the xpath to retrieve the desctiption.
def descriptions = holder.getNodeValues("//*:errorsAndWarnings/*:errors/*:error/@description")
//logging the descriptions
descriptions.each{
log.info "Error: $it"
}
Run Code Online (Sandbox Code Playgroud)
这里的变量descriptions包含错误描述列表。
根据您的声明,我想在以下步骤中添加以下信息,以供您参考。但是,有关您的用例的信息并不完全可用。希望下面的内容也会有所帮助。
如果您希望此数据可用于下一步,则可以进行以下操作。但这可能会改变下一步真正需要数据的方式。另请注意,这里有可用的错误描述列表。
在另一个groovy脚本中使用它:
可以使用context变量将数据/对象从一个groovy脚本步骤传递到另一个groovy步骤。例如,您可以在上面的groovy脚本中将描述添加到上下文中,以便可以在后续步骤中检索它们。
在另一个测试请求步骤(肥皂/休息)中使用它:在这里您将能够使用字符串数据,但实际上不能以简单的方式使用列表。