0

k6 的新手,使用 Web 应用程序在加载 css 和 js 文件时在主页上简要显示微调器。

加载文件并且脚本可用后,将添加登录表单(替换微调器)。

  • 使用 k6,有没有办法等到正文中的特定正文元素(登录表单)可用,然后再继续下一步(即填充用户名和密码并提交表单以登录)?

目前,当我查看响应正文时,我只看到微调器元素。添加延迟似乎不会影响返回的正文,即使登录表单理论上应该已添加到页面中。

如果在初始页面加载后将元素添加到正文中,它会被 k6 检测到并在响应中可用吗?

谢谢你的帮助。

账单

4

2 回答 2

1

k6 不像浏览器那样工作 - 负载测试是用 JavaScript 编写的,但是当您请求 HTML 文件时,该文件中的 JavaScript 不会执行。eval()由于 k6 没有 DOM 或任何常见的浏览器 API,因此即使使用或类似的东西通常也无法执行。因此,您必须明确指定您希望 k6 脚本发出的任何 HTTP 请求,在您的情况下,我假设微调器和登录表单是由主页中某处的 JavaScript 生成的。

为了在使用 k6 时简化对此类高动态网站的处理,您可以在浏览器中正常使用该站点,将浏览器会话记录为.har文件并将其导出,然后.har使用以下命令将该文件转换为 k6 脚本k6 convertk6 convert session.har -O k6_script.js. 您可以在此处找到有关整个过程的更多信息。

于 2018-10-02T06:58:19.823 回答
0

k6 不执行客户端代码,也不渲染任何东西。它向目标系统发出请求并加载它们。这使得发出大量请求很有效,但会产生在某些情况下必须解决的新事物。

  1. 捕获所有必要的请求 - 通常使用k6 convert转换 HAR 文件可以很好地为脚本奠定基础。我建议在转换中使用其他选项来限制任何第三方请求。例如--only--skip。更多信息: https: //support.loadimpact.com/4.0/how-to-tutorials/how-to-convert-har-to-k6-test/

  2. 由于您记录了浏览器会话,如果您的应用程序/站点使用任何东西来防止 CSRF 攻击,您必须处理这些值/关联它们。例如 .NET 站点使用VIEWSTATE,如果您正在测试 .NET 应用程序,您需要指示 VU 从响应正文中提取视图状态并在需要它的请求中重用它

  3. 与第 2 点类似,如果您正在提交表单,您可能不想一遍又一遍地使用相同的详细信息。这通常只是测试您的系统可以缓存多少或导致请求失败(例如,如果您正在登录并且您的系统不支持同一用户的并发登录)。k6 能够利用 CSV 或 JSON 数据作为数据参数化的来源。如果不太复杂,您也可以生成其中的一些内联。一些例子在这里:https ://docs.k6.io/docs/open-filepath-mode

于 2018-10-02T17:50:37.567 回答