5

示例网址:https ://abc.xyz.com/m# HTML 响应:

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
.
.
</head>
<body class="abc">        
.
.
.
<script>xab.start('{\"first\":\"123xyz\",\"second\":\"abc123\",\"third"..;</script>
</div>
</body>
</html>

在上述响应中,我想从响应中提取参数second '("second\":\"abc123\")' 的值并将其传递给下一个请求。

如果响应是 JSON 会更简单,但在这种情况下这是 HTML 响应。

我可以使用 Regex 在 JMeter 上做到这一点,但在 Postman 上很难做到。

谢谢!

4

3 回答 3

13

您可以查看使用Cheerio来获取值,它是 Postman 本机应用程序中的内置模块之一。

您可以添加类似此示例的内容,以从 HTML 中提取值。

这是从jsonplaceholdertitle页面的html 标记中获取值,然后将其设置为变量:environment

const $ = cheerio.load(pm.response.text())

pm.test("it should return a title", () => { 
    pm.expect($('title').text()).to.not.be.empty 
})

pm.environment.set('title', $('title').text())

Postman_Cheerio

我相信您可以使用它从您的示例中获得所需的价值。

于 2018-08-20T13:17:48.470 回答
-1

尝试通过 Json.parse 包装响应,然后使用 JavaScript 的 splice 方法拼接这个响应,无论你觉得舒服。

之后通过 setVariable 方法将其保存在变量中,然后您可以在其他请求中使用它。

于 2018-08-21T18:59:44.393 回答
-1

我的示例如何从 html 响应中的脚本标记获取数据

const $ = cheerio.load(pm.response.text())
var script = ($('script').text().replace("window.__STATE__ = ",""));

var jsonData = JSON.parse(script);

var uid = pm.environment.get("uid");
if (jsonData.stared == uid) pm.environment.set('reactArticle', false);
else {pm.environment.set('reactArticle', true);}
于 2019-02-20T01:23:14.427 回答