跳至主要内容

从 WebDriverIO 交互 Chrome DevTools

·阅读 7 分钟

WebdriverIO 构建用于测试各种类型的应用程序,从 Web 或移动应用程序到原生桌面应用程序,甚至 VS Code 扩展。但是 Chrome DevTools 插件呢?在这篇博文中,我们将探讨如何与为 Chrome Devtools 构建的扩展进行交互。

WebdriverIO 构建用于测试各种类型的应用程序,从 Web 或移动应用程序到原生桌面应用程序,甚至 VS Code 扩展。但是 Chrome DevTools 插件呢?在这篇博文中,我们将探讨如何与为 Chrome Devtools 构建的扩展进行交互。

WebDriverIO 的一项功能是能够与 Chrome DevTools 交互,这对于调试和测试 Web 应用程序和浏览器扩展非常有用。在本博文中,我们将探讨如何使用 WebDriverIO 与 Chrome DevTools 交互,重点关注与 PixiJS 扩展的交互。您可以在Github找到完整的示例。

WebdriverIO 中的 Devtools

设置扩展程序

您需要以 .crx 格式下载要测试的扩展程序,在本例中,我们已下载了 PixiJS-Devtools-Chrome-Web-Store.crx 扩展程序文件。

设置 WebDriverIO

首先,确保已在项目中设置了 WebDriverIO。如果没有,您可以按照官方安装指南此处进行安装。

Chrome DevTools 的 WebDriverIO 配置

这是针对我们的示例定制的配置文件 (wdio.conf.js)

import path from "path";
import fs from "fs";

export const config = {
specs: ["./test/specs/**/*.js"],
runner: "local",
maxInstances: 1,
capabilities: [
{
browserName: "chrome",
browserVersion: "stable",
"goog:chromeOptions": {
args: [
"ignore-certificate-errors-spki-list",
"--ignore-certificate-errors",
"window-size=1920,1080",
"--auto-open-devtools-for-tabs",
],
extensions: [
fs.readFileSync(
path.resolve("./PixiJS-Devtools-Chrome-Web-Store.crx"),
"base64"
),
],
},
},
],
logLevel: "debug",
framework: "mocha",
mochaOpts: {
ui: "bdd",
timeout: 1000 * 60 * 5, // 5 min
},
};

在此配置中,我们指定了 Chrome 浏览器,并提供了选项来自动打开选项卡的 DevTools 并加载 PixiJS DevTools 扩展程序。extensions 选项以 base64 格式读取扩展程序文件。我们还需要 --auto-open-devtools-for-tabs 标志来自动打开 DevTools(开发者工具)面板。

编写测试脚本

接下来,我们编写一个测试脚本,通过 Chrome DevTools 与 PixiJS 扩展程序进行交互。创建测试文件,例如 devtools.test.js,并添加以下代码

import { $, browser } from "@wdio/globals";
import { Key } from "webdriverio";

describe("DevTools Test on latest chrome", function () {
it("Devtools Navigation", async function () {
// Open an example game.
await browser.url(
"https://pixijs.io/examples-v5/#/demos-basic/container.js"
);

// Get window handles.
const handles = await browser.getWindowHandles();

// Switch to devtools window.
await browser.switchToWindow(handles[1]);

// Navigate through devtool tabs.
// For linux machines use [Key.Control, '['] .
await browser.keys([Key.Meta, "["]);

// Switch to devtool extension iframe.
await browser.switchToFrame(0);

// Manipulate extension.
await $(
"body > div > div > div.status.svelte-iqeeoq > div.patch.svelte-iqeeoq > button"
).click();
await $(
"body > div > div > div.outliner.svelte-iqeeoq > div > div.body.svelte-1vjyr8f > div:nth-child(1) > button:nth-child(4)"
).click();
await $(
"body > div > div > div.outliner.svelte-iqeeoq > div > div.body.svelte-1vjyr8f > div:nth-child(1) > button:nth-child(4)"
).click();

// Switch back to parent frame.
await browser.switchToParentFrame();

// Switch back to main window.
await browser.switchToWindow(handles[0]);
});
});

脚本说明

  1. 打开 URL:脚本导航到 PixiJS 游戏示例。
  2. 获取窗口句柄:检索主窗口和 DevTools 窗口的窗口句柄。
  3. 切换到 DevTools 窗口:使用其句柄将上下文切换到 DevTools 窗口。
  4. 导航 DevTools 选项卡:使用键盘快捷键在 DevTools 选项卡之间导航。注意:对于 Linux,请将 ['Meta', '['] 替换为 ['Control', '[']
  5. 切换到 Iframe:切换到包含 PixiJS 扩展程序的 iframe。
  6. 与扩展程序交互:对扩展程序中的特定元素执行点击操作。
  7. 切换回:返回到父框架,然后返回到主窗口。

运行测试

要运行测试,请执行以下命令

npx wdio run wdio.conf.js

这将启动 Chrome,打开指定的 URL,与 DevTools 交互,并根据测试脚本中定义的内容操作 PixiJS 扩展程序。

演示

Devtools

结论

通过利用 WebDriverIO 和 Chrome DevTools,您可以自动化复杂的浏览器交互和扩展操作。这种方法有利于测试 Web 应用程序并确保 PixiJS 等扩展程序在不同场景下都能正常工作。

请随时修改脚本以适应您的特定测试需求。祝测试愉快!

欢迎!我怎样才能帮助您?

WebdriverIO AI Copilot