
本文档旨在指导 Postman 用户如何从 HTML 响应中提取特定的变量值,例如 JavaScript 代码中的 authorizationCode。我们将使用正则表达式来匹配和提取目标值,并将其保存为 Postman 变量,以便在后续请求中使用。
从 HTML 响应中提取数据
在 Web API 测试中,有时服务器会返回 HTML 格式的响应。我们需要从这些 HTML 响应中提取特定的数据,例如动态生成的 token 或 ID。Postman 提供了强大的脚本功能,可以帮助我们实现这个目标。
一种常见的方法是使用 Cheerio 库解析 HTML,然后使用 CSS 选择器查找目标元素。然而,当目标数据隐藏在 JavaScript 代码中时,正则表达式可能是一种更直接有效的选择。
使用正则表达式提取 authorizationCode
假设我们收到如下的 HTML 响应:
立即学习“前端免费学习笔记(深入)”;
function onClickButton(word) { if (word == 'yes'){ var authorizationCode = '360ad5ce-ecfe-4ad4-83d1-9254e89a3ccc'; var state = 'c8271b81-4229-6a1f-bf9c-758f11c1f5b1'; } else { alert(word); } }
我们的目标是从 标签中提取 authorizationCode 的值。由于 authorizationCode 的值是一个 GUID (Globally Unique Identifier),我们可以使用正则表达式来匹配它。
在 Postman 的 “Tests” 标签中,添加以下脚本:
pm.test("提取 authorizationCode", function () { var regEx = new RegExp('({){0,1}[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}(}){0,1}'); var match = regEx.exec(pm.response.text()); if (match) { pm.collectionVariables.set("authorizationCode", match[0]); console.log("authorizationCode: " + pm.collectionVariables.get("authorizationCode")); } else { pm.expect.fail("未找到 authorizationCode"); }});
代码解释:
pm.test(“提取 authorizationCode”, function () { … });: 这是一个 Postman 测试块,用于执行测试逻辑。var regEx = new RegExp(‘({){0,1}[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}(}){0,1}’);: 定义一个正则表达式,用于匹配 GUID 格式的字符串。 [0-9a-fA-F] 匹配任何十六进制字符,{8}, {4}, {12} 指定了字符出现的次数,- 匹配连字符,({){0,1}和(}){0,1} 匹配可选的花括号。var match = regEx.exec(pm.response.text());: 使用正则表达式在响应文本中查找匹配项。pm.response.text() 获取响应的 HTML 内容。regEx.exec() 返回一个数组,其中第一个元素是匹配的字符串,如果未找到匹配项,则返回 null。if (match) { … } else { … }: 检查是否找到了匹配项。pm.collectionVariables.set(“authorizationCode”, match[0]);: 如果找到了匹配项,则将匹配的字符串(即 authorizationCode 的值)保存到名为 authorizationCode 的 collection 变量中。 match[0] 包含完整的匹配字符串。console.log(“authorizationCode: ” + pm.collectionVariables.get(“authorizationCode”));: 在 Postman 控制台中打印 authorizationCode 的值,方便调试。pm.expect.fail(“未找到 authorizationCode”);: 如果未找到匹配项,则使测试失败,并显示错误消息 “未找到 authorizationCode”。
注意事项:
确保正则表达式能够准确匹配目标值,避免提取到错误的数据。如果 HTML 结构复杂,可能需要调整正则表达式或使用其他方法(例如 Cheerio)来提取数据。可以使用 pm.environment.set() 将提取的值保存为环境变量,以便在不同的 collection 之间共享。正则表达式的性能可能受到 HTML 响应大小的影响,对于大型 HTML 响应,建议考虑使用更高效的解析方法。
总结
本文介绍了如何使用正则表达式从 Postman 的 HTML 响应中提取特定的变量值,并将其保存为 collection 变量。 这种方法适用于从 JavaScript 代码或其他文本内容中提取已知格式的数据。 通过灵活运用正则表达式,可以有效地处理各种复杂的 HTML 响应,从而实现自动化 API 测试的目标。
以上就是使用 Postman 从 HTML 响应中提取特定值:正则表达式方法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1570917.html
微信扫一扫
支付宝扫一扫