2016-04-23 111 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