使用Postman从带有Cheerio的HTML响应中提取值

zbsbpyhn  于 2022-11-07  发布在  Postman
关注(0)|答案(3)|浏览(375)

我试图从request中得到一个值,它返回一个HTML响应,使用Postman。我在脚本部分使用Cheerio。
响应如下所示:

<table class="etlsessions-table" cellpadding="0" cellspacing="0">
        <thead>
            <tr>
                <th class="someclass1">
                    <div>
                        <span>info1</span>
                    </div>
                </th>
                <th class="someclass2">
                    <div>
                        <span>info2</span>
                    </div>
                </th>
                <th class="someclass3">
                    <div>
                        <span>info3</span>
                    </div>
                </th>
                <th class="someclass2">
                    <div>
                        <span>info4</span>
                    </div>
                </th>
            </tr>
        </thead>
        <tbody>
            <tr class="someclass5">
                <td class="someclass">
                    <nobr>info5</nobr>
                </td>
                <td class="someclass6">
                    <nobr>info6</nobr>
                </td>
                <td class="someclass3">info7</td>
                <td class="someclass7">
                    <a href="http://www.google.com">someurl1</a>
                </td>
            </tr>
       </tbody>
    </table>

如何从someclass6类中获取info6值?

cgvd09ve

cgvd09ve1#

由于Cheerio内置于Postman沙盒环境中,因此可以使用它来获取元素的值。
我不确定您的完整用例,但您可以向Tests脚本添加类似下面这样的基本内容,并将该值输出到控制台:

const $ = cheerio.load(pm.response.text()),
    elementValue = $('.someclass6 nobr').text();

console.log(elementValue)
mhd8tkvw

mhd8tkvw2#

丹尼强调说
使用jQuery选择器API获取页面上阅读dom的不同元素

const $ = cheerio.load(pm.response.text());
console.log $('.someclass6 nobr').text(); //derive any element from class 
  which has value someclass6

或者你可以这样写

console.log($("td[class$='someclass6'] nobr").text()); //derive any text value within the td tag from the class  which has the value someclass6 
console.log($("td").attr('class')) //to fetch values from the attribute(s) of tag td

将其作为集合变量存储在postman中,以便在其他api调用中使用。

const $ = cheerio.load(pm.response.text());
var storesomeclass6 =  $('.someclass6 nobr').text();
pm.collectionVariables.set("someclass6", storesomeclass6 );
zc0qhyus

zc0qhyus3#

Postman是一个允许调用API端点的软件,所以基本上你的程序将用node.js编写,你将用postman调用端点。
在本例中,使用cheerio,代码看起来如下所示:

function getResponse() {

return fetch(`${YOUR API END POINT URL}`)
.then(response => response.text())
.then(body => {
  const $ = cheerio.load(body);
  const $info6= $('.someclass6 td );

  const info6= $info6.first().contents().filter(function() {
    return this.type === 'text';
  }).text().trim();
  const response= {
    info6,
  };

  return response;
});
}

祝你好运!

相关问题