如果没有用于声明命名空间的URL,如何对我的XML响应进行XPath断言,这与脚本断言相同
<data contentType="image/png" contentLength="1143">iVBORw0KGgAEAAA0vr3J9P0uQmCC</data>
这就是我得到的全部
答案 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"
断言,如下图所示:
希望这有帮助,
答案 1 :(得分:2)
其中一个父元素可能已声明了一个名称空间,并向下传递给子元素。
在一个简单的XPath断言中,你可以使用&#34; any&#34; namespace://*:data
,不必声明。