簡體   English   中英

郵遞員:如何從 html 響應中提取值並將其傳遞給郵遞員中的下一個請求

[英]Postman: How to extract value from html response and pass it on to next request in postman

示例網址: 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 上做到這一點。

謝謝!

您可以看看使用Cheerio獲得值,它是Postman本機應用程序中的內置模塊之一。

您可以添加類似此示例的內容,以從HTML中提取值。

這是從jsonplaceholder頁面的title 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())

郵遞員

我確信您可以使用它來從示例中獲取所需的價值。

假設您在second字段中沒有任何"標記,則可以使用:

\\\\"second\\\\":\\\\"(.*?)\\\\",

例如: https//regex101.com/r/yl8Z6M/1

如果這樣做,那么這將超出正則表達式的范圍,並且是一種上下文無關的語法,您需要以其他方式進行解析

嘗試通過Json.parse包裝響應,然后使用子字符串JavaScript的splice方法對這個響應進行拼接,只要您覺得舒服即可。

之后,通過setVariable方法將其保存在變量中,然后可以在其他請求中使用它。

我的示例如何從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);}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM