Javascript K6负载测试-如何从html响应中提取值
我第一次使用K6负载测试工具 我发送一个GET请求,并在响应中发送html。然后我需要从这个html中提取一些值 在html中实现这一点的最佳方法是什么?我在文档中看到,以下3个命令可能会有所帮助:Javascript K6负载测试-如何从html响应中提取值,javascript,load-testing,k6,Javascript,Load Testing,K6,我第一次使用K6负载测试工具 我发送一个GET请求,并在响应中发送html。然后我需要从这个html中提取一些值 在html中实现这一点的最佳方法是什么?我在文档中看到,以下3个命令可能会有所帮助: Response.body Selection.find(selector) Response.json([selector]) HTML如下所示。我想提取csrf和transId的值 <html lang="en"> <head> <l
Response.body
Selection.find(selector)
Response.json([selector])
HTML如下所示。我想提取csrf和transId的值
<html lang="en">
<head>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<script data-container="true" nonce="ekqlmSlKlpMlCSDxgP6erg==">
var SETTINGS = {
"csrf": "I NEED THIS VALUE",
"transId": "I ALSO NEED THIS VALUE",
};
</script>
</head>
<body>
</body>
</html>
变量设置={
“csrf”:“我需要这个值”,
“transId”:“我也需要这个值”,
};
我想我可以使用Response.body,然后搜索子字符串。这是最好的方法吗?首先,要获取脚本标记的内容,您可以
const doc = parseHTML(res.body);
const script = doc.find('head script');
const scriptContent = script.text();
现在从中提取所需的值
var SETTINGS = {
"csrf": "I NEED THIS VALUE",
"transId": "I ALSO NEED THIS VALUE",
};
您必须执行一些不建议用于负载测试脚本的字符串操作。但你可以
a.substr(28, 15)
获取csrf值和
a.substr(57, 22)
获取transId值。因为在本例中,您有javascript,您可以对其求值并获取如下值
从“k6/html”导入html;
导出默认函数(){
var res=`
变量设置={
“csrf”:“我需要这个值”,
“transId”:“我也需要这个值”,
};
`
var b=html.parseHTML(res.find(“脚本”).text();
控制台日志(b);
var设置=评估(b+“设置;”);
console.log(settings.csrf);
}
这样你就不需要知道这些值的确切位置,你可以从中得到更多的值。。。容易地;)
正如另一个答案所提到的,在负载测试脚本中,这可能不是一个好主意——尤其是负载测试部分——如果在某些设置代码中是这样的话,它可能是好的
注:;设置
是因为eval
返回最后一个值,所以我们需要将设置放在最后;)
或者,您可以编写一个助手函数来完成Aalok手工完成的工作:
导出默认函数(){
var res=`
变量设置={
“csrf”:“我需要这个值”,
“transId”:“我也需要这个值”,
};
`
日志(getLabel(res,“csrf”);
日志(getLabel(res,“transId”);
}
函数getLabel(内容、标签){
var start=content.indexOf(““'+label+”:“)+label.length+3;
var nextComma=content.indexOf(“,”,start);
var nextCurly=content.indexOf('}',start);
var end=Math.min(nextComma,nextCurly);
返回content.substring(开始、结束)
}
您可能需要修剪一些空格或/和“