我尝试从SOAP API返回的XML中提取SessionId。
我已经通读了Postman文档(好几遍了),但它对实现我的目标并没有多大帮助。
一些博客建议将XML转换为JSON,然后从中提取令牌及其值,但这也没有帮助。
我在测试中使用了以下内容:
var jsonObject = xml2Json(responseBody);
postman.setGlobalVariable("Session_Id", jsonObject.SessionID);
上面的代码创建了变量“Session_Id”,但实际上并没有给它赋值。
我肯定是从API中检索数据,并且可以在Postman的“Body”响应中查看。
3条答案
按热度按时间33qvvth11#
要使用Postman从XML提取变量,首先使用xml2Json转换器方法将XML转换为JSON:
(其中“responseBody”是您的xml主体。)然后使用console.log方法输出JSON数据,如下所示:
请确保已在Enabling Chrome Dev Tools in Postman上执行了本教程
在你的测试运行器中运行测试,然后右键点击并在运行器中的任何地方“检查”。在Chrome的开发工具启动后选择“控制台”选项卡。展开“对象”部分。
然后向下钻取(展开),直到看到所需数据的属性。然后,通过将每个向下钻取级别附加到所需参数来设置变量:
在本例中,“responseJson”是对象,“UserSessionToken”是下钻的下一个级别,SessionId是我需要的参数。
注:此答案是postman v7.15.0之前的正确解决方案。对于此版本之后的版本,已接受的答案可能不起作用。
sh7euo9m2#
自从Postman v7.15.0以来这个被接受的答案对我不起作用(在更新之前它曾经起作用)。你必须把路径段放在方括号里。
例如,在以下XML响应中:
要检索值 * duration in-months*:
我强烈怀疑这种行为是在任何元素名包含连字符时引起的。
km0tfn4u3#
Postman v7.20.1
我想补充我的答案,因为上面有一对夫妇的细节,我花了一段时间来解决:
下面是要分析的XML响应的第一行:
在我注意到这是一个多部分之后,我用这个 Postman 测试结束了: