2014-10-08 82 views
0

XPath的说法如何让我的XPath断言我的XML响应,如果没有URL在其声明的命名空间,同样会去脚本断言没有命名空间

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

这是我得到的

回答

2

在SOAPUI可以使用XPath即使有该节点上没有命名空间的定义(您的命名空间中的<data>元素的父节点可能定义)。在你的问题目前还不清楚你想要做什么,因此,例如,如果你想查询contentLenght属性的值您<data>元素,您可以使用后续XPath来获取值:

//data/@contentLength

如果你有一个测试步骤要求在响应<data>,当你问你想和断言在常规测试步骤可以与后续的代码做到这一点:

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

相反,如果你有XML内容的字符串你可以这样做:

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" 

最后,如果你有一个测试步骤请求时,它也有可能使这个添加XPath Match断言在您的测试步骤的要求,你可以在后续图像中看到:

enter image description here

希望这可以帮助,

+0

@albcliff当我们提取像$ {步骤#回应#// * [本地名称()= “血红素”] //}节点它提取命名空间以及例如<先生:条目的xmlns:MR =“HTTP: //www.example.com“> 名称 www.udzial.com当原始值没有此响应中的mr – 2018-02-07 06:53:55

2

一个父元素可能有申报命名空间,并且向下流到孩子。

在一个简单的XPath断言,您可以使用“任何”命名空间://*:data,它没有声明。