因为在这种情况下,您有 javascript,您可以对其进行评估并将值作为
import html from "k6/html";
export default function () {
var res = `<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>
`
var b = html.parseHTML(res).find("script").text();
console.log(b);
var settings = eval(b + ";SETTINGS;");
console.log(settings.csrf);
}
这样你就不需要知道值的确切位置,你可以从中获得更多的值......很容易;)。
正如另一个回答提到的那样,这在负载测试脚本中可能不是一个好主意 - 尤其是负载测试部分 - 如果这在某些设置代码中可能没问题。
注意:这;SETTINGS;
是因为eval
返回最后一个值,所以我们需要把 SETTINGS 放在最后;)
或者,您可以编写一个辅助函数来执行 Aalok 手动执行的操作:
export default function () {
var res = `<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>
`
console.log(getLabel(res, "csrf"));
console.log(getLabel(res, "transId"));
}
function getLabel(content, label) {
var start = content.indexOf('"'+label+'":') + label.length + 3;
var nextComma = content.indexOf(',', start);
var nextCurly = content.indexOf('}', start);
var end = Math.min(nextComma,nextCurly);
return content.substring(start,end)
}
您可能需要修剪一些空格或/和"