如何在Postman中从HTTP响应body的script标签提取指定URL参数?
在Postman中从HTML响应的script标签提取URL参数并存入变量
假设你的接口返回的HTML响应中包含类似这样的script标签内容:
按照以下步骤编写Postman测试脚本,提取指定参数并保存为变量:
步骤1:编写测试脚本
在请求的「Tests」标签中粘贴以下代码:
// 获取完整响应文本 const responseText = pm.response.text(); // 匹配script标签内的window.location.href链接 const urlRegex = /window\.location\.href\s*=\s*["'](.*?)["']/; const urlMatchResult = responseText.match(urlRegex); // 检查是否匹配到目标链接 if (!urlMatchResult || urlMatchResult.length < 2) { console.error("未在响应中找到window.location.href的链接内容"); return; } const targetUrl = urlMatchResult[1]; // 解析URL中的查询参数 // 处理相对路径:如果targetUrl是相对路径,补全请求的域名和协议 const fullUrl = new URL(targetUrl, `${pm.request.url.protocol}//${pm.request.url.host}`); const queryParams = new URLSearchParams(fullUrl.search); // 定义需要提取的参数列表 const paramsToExtract = ["token", "cookieToken", "user_id", "refresh_token", "expire_date"]; // 提取参数并设置为环境变量(可根据需求切换为全局/集合变量) paramsToExtract.forEach(paramName => { const paramValue = queryParams.get(paramName); if (paramValue) { pm.environment.set(paramName, paramValue); console.log(`成功保存${paramName}到环境变量: ${paramValue}`); } else { console.warn(`未找到参数${paramName}`); } });
步骤2:调整变量存储类型
如果不需要存到环境变量,可替换pm.environment.set为:
pm.globals.set:保存为全局变量pm.collectionVariables.set:保存为集合变量
注意事项
- 若响应中的script标签格式有差异(比如单引号、多余空格),可微调正则表达式
urlRegex,确保能精准匹配到window.location.href后的链接 - 如果目标URL是绝对路径,可直接使用
new URL(targetUrl),无需补全域名
内容的提问来源于stack exchange,提问作者ali haji khaluie
相关产品推荐
相关产品推荐

