没有命名空间的XPath断言

时间:2014-10-08 11:37:23

标签: xml groovy soapui

如果没有用于声明命名空间的URL,如何对我的XML响应进行XPath断言,这与脚本断言相同

<data contentType="image/png" contentLength="1143">iVBORw0KGgAEAAA0vr3J9P0uQmCC</data>

这就是我得到的全部

2 个答案:

答案 0 :(得分:3)

在SOAPUI中,您可以使用XPath,即使该节点上没有名称空间定义(您的名称空间可能在<data>元素的父节点中定义)。在您的问题中,您不清楚自己想要做什么,例如,如果您想检查contentLenght元素的<data>属性值,可以使用关注{{1}获取值:

XPath

如果您在响应中有//data/@contentLength的测试步骤请求,并且您要求在groovy测试步骤中创建并断言,则可以使用以下代码执行此操作:

<data>

如果你有一个包含XML内容的字符串,你可以这样做:

def content = context.expand('${YourTestRequestName#response#//data/@contentLength}')
log.info content
assert content.equals("1143"), "ASSERT FAIL"

最后,如果您有测试步骤请求,也可以在测试步骤请求中添加def data = '<data contentType="image/png" contentLength="1143">iVBORw0KGgAEAAA0vr3J9P0uQmCC</data>' def xmlHolder = new com.eviware.soapui.support.XmlHolder(data) def contentLength = xmlHolder.getNodeValue("//data/@contentLength") log.info contentLength assert content.equals("1143"), "ASSERT FAIL" 断言,如下图所示:

enter image description here

希望这有帮助,

答案 1 :(得分:2)

其中一个父元素可能已声明了一个名称空间,并向下传递给子元素。

在一个简单的XPath断言中,你可以使用&#34; any&#34; namespace://*:data,不必声明。