2016-04-23 47 views
7

我想從SOAP API返回的XML中提取SessionId。如何使用Postman從XML中提取變量?

我已經閱讀了郵遞員文檔(幾次以上),但它不是實現我的目標最有幫助的。

在一些博客中提出的建議是將XML轉換爲JSON,然後從中選擇令牌和值,但這也沒有幫助。

我曾經在我的測試如下:

var jsonObject = xml2Json(responseBody); 
postman.setGlobalVariable("Session_Id", jsonObject.SessionID); 

上面創建的變量「SESSION_ID」,但沒有一個值實際上分配給它。我很難過。

我絕對從API中檢索數據,並且可以在Postman的「Body」響應中查看。

+0

我仍然在尋求這個答案,而且我向向我介紹該應用的人證實了這一點。如果我在接下來的幾天裏沒有來,我會給郵遞員發郵件。 –

+1

什麼是jsonObject的輸出,是jsonObject.SessionID的一個字符串。根據郵差文檔:postman.setGlobalVariable(variableName,variableValue):設置一個全局變量「variableName」,併爲其分配字符串「variableValue」。注意:只能存儲字符串。存儲其他類型的數據將導致意外的行爲。 – Shaughn

+0

我通過電子郵件發送了郵遞員@Shaughn和他們的創始人之一回答說,告訴我同樣的事情。但他繼續說,該應用程序會自動將任何其他類型轉換爲字符串。不管怎樣,我發現了這個問題。我沒有深入鑽入JSON blob。我結束了使用: 'postman.setEnvironmentVariable(「Session_Id」,jsonObject.UserSessionToken.SessionId);' 我使用了Console.log,並一直檢查輸出,直到找到所需的東西。 –

回答

15

要使用郵差從XML提取變量,第一你的XML轉換成JSON,使用xml2Json轉換器的方法:(其中 「responseBody」 是你的XML主體)

var responseJson = xml2Json(responseBody); 

然後使用控制檯。登錄方法來輸出JSON數據,因爲這樣的:

console.log(responseJson); 

一定要遵循上Enabling Chrome Dev Tools in Postman

本教程裏面你r運行測試程序,運行測試,然後在Runner中的任意位置右鍵單擊並「檢查」。一旦Chrome的Dev Tools啓動,請選擇「控制檯」選項卡。展開「對象」部分。

然後深入(展開),直到您看到您需要其數據的屬性。 此後,通過追加每個向下鑽取級別的參數設置變量,你想:

postman.setGlobalVariable("Session_Id", responseJson.UserSessionToken.SessionID); 

在這種情況下,「responseJson」是對象,「UserSessionToken」是在向下鑽取一個新的水平, SessionId是我需要的參數。

+4

如果您運行的是獨立應用,則無需通過Chrome啓用這些工具。只需從菜單欄中打開:查看 - >顯示郵遞員控制檯 – sunil