2014-10-08 84 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,它沒有聲明。