K6 负载测试 - 如何从 html 响应中提取值

Mat*_*att 4 javascript load-testing k6

我是第一次使用 K6 负载测试工具。

我发送了一个 GET 请求,响应中发送了 html。然后我需要从这个 html 中提取一些值。

在 html 中执行此操作的最佳方法是什么?我在文档中看到以下 3 个命令可能有帮助:

Response.body
Selection.find(selector)
Response.json([selector])
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

我想我可以使用 Response.body 然后搜索子字符串来做到这一点。这是最好的方法吗?

Aal*_*lok 5

首先,要获取脚本标签的内容,你可以这样做

  const doc = parseHTML(res.body);

  const script = doc.find('head script');
  const scriptContent = script.text();
Run Code Online (Sandbox Code Playgroud)

现在从

  var SETTINGS = {

     "csrf": "I NEED THIS VALUE",
     "transId": "I ALSO NEED THIS VALUE",
    };
Run Code Online (Sandbox Code Playgroud)

您将不得不进行一些不推荐用于负载测试脚本的字符串操作。但是你可以

a.substr(28, 15)
Run Code Online (Sandbox Code Playgroud)

获取 csrf 值和

a.substr(57, 22)
Run Code Online (Sandbox Code Playgroud)

获取 transId 值。