使用浏览器脚本

浏览器测试通过通过浏览器回放基于 Node.js 的测试脚本来模拟用户通过 Web 应用程序可能采用的路径,以监视和度量用户 Web 站点的性能。

Instana Synthetic 浏览器测试支持基于 Selenium的 API ,并通过超过 30 个 浏览器测试 API来扩展浏览器测试功能。

此外, Instana Synthetic 还引入了一组 全局变量 和 API ,使浏览器测试更容易,可维护且安全。

通过使用此功能,脚本开发者可以主要关注其测试逻辑,而不是安装浏览器和驱动程序,打开和关闭浏览器以及释放资源。

先决条件

合成 PoP Helm Chart 1.0.15 或更高版本支持 Instana 浏览器测试。

新的回放引擎用于运行这些测试。 必须将合成 PoP 版本 升级 到 1.0.15 或更高版本,才能启用浏览器回放引擎。

要检查合成 PoP Helm Chart 的版本,请运行以下命令:

helm list -n <namespace>

要检查是否启用了用于浏览器测试的新回放引擎,请运行以下命令:

kubectl get pod -n <namespace> | grep browserscript
synthetic-pop-browserscript-playback-engine-8589bb6cbf-dh7sb   1/1     Running   0          13m

支持的运行时和功能

  • Instana Synthetic 浏览器测试支持 Chromium , Mozilla Firefox和 Node.js 运行时。

    • Mozilla Firefox 115.4.0esr
    • Chromium 102.0.5005.0
    • Node.js v18
    • selenium-webdriver 4.20.0
  • Instana Synthetic 浏览器测试支持基于 Selenium的 API 和超过 30 个浏览器测试 API。

  • Instana Synthetic 浏览器测试支持分析和收集度量值,例如响应时间和响应大小。

  • Instana 合成浏览器测试支持测试结果中的录音、屏幕截图、浏览器日志、控制台日志和 HTTP 存档格式 (HAR)。

浏览器脚本测试类型

通过 Instana Synthetic ,您可以创建以下浏览器脚本测试:

浏览器脚本

浏览器脚本基于 Node.js ,同时包含 singlebundled 脚本。

浏览器脚本:单一浏览器测试脚本

您可以在单个脚本中编写所有内容。 通常,这种方式可以满足大多数用户的需求。 请参阅以下示例:

(async function () {
  console.log("Access IBM website");
  await $browser.get("https://www.ibm.com/us-en");

  console.log("Accept all cookies");
  const cookies = await $browser.waitForAndFindElement(
    $driver.By.id(`truste-consent-button`),
    30000
  );
  await cookies.click();
})();

浏览器脚本:捆绑浏览器测试脚本

如果业务逻辑很复杂,请不要在单个脚本中包含所有内容。 在 GitHub中使用多个脚本文件以实现更好的维护,代码复用和版本控制。

可以在压缩文件中使用捆绑脚本。

  1. 使用共享库编写多个脚本。 请参阅以下示例:

    // bundled/mytest.js
    const assert = require("assert").strict;
    let { testIBM } = require("./lib/myscript.js");
    console.log("Start to test");
    testIBM();
    
    // bundled/lib/myscript.js
    async function testIBM() {
      console.log("Access IBM website");
      await $browser.get("https://www.ibm.com/us-en");
    
      console.log("Accept all cookies");
      const cookies = await $browser.waitForAndFindElement($driver.By.id(`truste-consent-button`), 30000);
      await cookies.click();
    };
    module.exports = {
      testIBM
    };
    
  2. 将多个脚本打包到 .zip 文件中。 请参阅以下示例:

    将脚本压缩到具有顶级文件夹 bundled 和主文件 bundled/mytest.js.zip 文件中。

    zip -r bundledtest.zip bundled
    

    或者使用主文件 mytest.js将所有脚本打包到 .zip 文件中。

    zip -r bundledtest.zip *
    

Selenium IDE 脚本

Selenium IDE 脚本 是 Selenium IDE 记录的脚本。

浏览器脚本示例

Instana Synthetic 提供了许多 示例,这些示例可帮助您快速入门或快速编写自己的浏览器测试。

要开始使用,请参阅以下示例:

浏览器脚本测试和调试

Instana Synthetic 提供 Node.js 命令行应用程序 synthetic-browser-script,以帮助用户在本地开发,测试或调试浏览器测试脚本。

synthetic-browser-script 应用程序现在在 GitHubnpmjs 站点中可用。

  • 它是 Instana Synthetic 的本地运行程序,可帮助您进行合成浏览器测试。

  • 它随附许多 示例,可帮助您快速编写自己的浏览器测试。 将添加更多示例。

在以下情况下,可以使用 synthetic-browser-script 本地运行器:

  • 您需要本地运行器才能使用 CLI 测试和调试浏览器脚本。

  • 您需要提供所有 Instana Synthetic 浏览器测试 API 的 npm 包。

  • 对于所有浏览器测试 API ,您需要 VS Code 中的 "代码完成" 或 "代码提示"。

  • 您需要一个打开的完整浏览器来完成测试操作并证明脚本的质量。

  • 您需要在本地重现测试失败,以帮助调试根本原因。

  • 您需要从浏览器测试 API 的示例中学习,然后根据这些示例编写自己的浏览器测试。