# @badisi/wdio-harness 中文文档

规范地址：https://npmcn.com/package/%40badisi/wdio-harness/

版本：5\.0\.0
npm 元数据更新时间：2026-10-24T23:21:51.690Z
中文译文更新时间：2026-11-07T14:41:47.571Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40badisi/wdio-harness
原文对照：https://npmcn.com/package/%40badisi/wdio-harness/?lang=original
项目主页：https://github.com/Badisi/wdio-harness
源码仓库：https://github.com/Badisi/wdio-harness

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：28.1 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：^16\.14\.0 \|\| \>=18\.10\.0
- 运行依赖：0 个
- peer 依赖：webdriverio \>= 10 \< 11，@angular/cdk \>= 13 \< 22，@wdio/logger \>= 10 \< 11，@wdio/globals \>= 10 \< 11
- 首次发布：2021-11-16T00:28:25.780Z
- 最新版本发布：2026-10-24T23:21:51.316Z
- 近 30 天下载量：32493（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：42（近 12 个月 8 个）

## 中文简介

WebdriverIO支持角构件测试牵引.

## 安装

```sh
npm install @badisi/wdio-harness
```

也可以使用：`pnpm add @badisi/wdio-harness`、`yarn add @badisi/wdio-harness`、`bun add @badisi/wdio-harness`

## README

# @badisi/wdio-harness (英语)

🔬 _[网络司机](https://webdriver.io/) 支持角构件测试工具._  

[![npm version](https://img.shields.io/npm/v/@badisi/wdio-harness.svg?color=blue&logo=npm)](https://www.npmjs.com/package/@badisi/wdio-harness) [![npm donwloads](https://img.shields.io/npm/dw/@badisi/wdio-harness.svg?color=7986CB&logo=npm)](https://npmcharts.com/compare/@badisi/wdio-harness?minimal=true) [![license](https://img.shields.io/npm/l/@badisi/wdio-harness.svg?color=ff69b4)](https://github.com/Badisi/wdio-harness/blob/main/LICENSE)

[![build status](https://img.shields.io/github/actions/workflow/status/badisi/wdio-harness/ci_tests.yml?logo=github)](https://github.com/Badisi/wdio-harness/actions/workflows/ci_tests.yml) [![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Badisi/wdio-harness/blob/main/CONTRIBUTING.md#-submitting-a-pull-request-pr)

* * *

#### 组件测试工具

> 元件牵引是让测试通过支持的API与元件交互的类. 每个带子的API与一个组件的相互作用 和用户的一样 通过使用取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取 利用组件的想法来自 [页次 目标](https://martinfowler.com/bliki/PageObject.html) 用于集成测试的图案.

[更多的资讯...](https://material.angular.io/cdk/test-harnesses/overview)

* * *

## 安装

```sh
npm install @badisi/wdio-harness --save-dev
```

```sh
yarn add @badisi/wdio-harness --dev
```

## 使用量

**方法**

-   `createHarnessEnvironment(rootElement)` - 从给定的元素( 默认对正体) 获取 HarnessLoader 实例
-   `getHarness(harnessType, element)` - 从给定的组件Harness类和元素中寻找牵引物实例
-   `getHarness(harnessType)` - 从特定组件Harness类中寻找牵引物
-   `getHarness(query)` - 从给定的Harness Predicate中寻找一个牵引物
-   `getAllHarnesses(query)` - 动作像得到Harness, 但返回一系列的拉带实例
-   `waitForAngular()` - 等待Angular完成靴子夹

**示例**

```ts
import '@angular/compiler'; // required since Angular v21
import { MatDatepickerInputHarness } from '@angular/material/datepicker/testing';
import { getHarness } from '@badisi/wdio-harness';

describe('Angular Material Harness', () => {
    beforeEach(async () => {
        await browser.url('http://localhost:4200');
    });

    it('MatDatePicker', async () => {
        const datepicker = await getHarness(MatDatepickerInputHarness.with({ selector: '#demo-datepicker-input' }));

        await datepicker.setValue('9/27/1954');
        expect(await datepicker.getValue()).withContext('Date should be 9/27/1954').toBe('9/27/1954');

        await datepicker.openCalendar();
        const calendar = await datepicker.getCalendar();
        await calendar.next();
        await calendar.selectCell({ text: '20' });
        expect(await datepicker.getValue()).withContext('Date should be 10/20/1954').toBe('10/20/1954');
    });
});
```

更多实例 [这里](https://github.com/Badisi/wdio-harness/blob/main/projects/tests-e2e/harness.e2e.ts)。 。 。 .

## 发展

见 [开发者文件](https://github.com/Badisi/wdio-harness/blob/main/DEVELOPER.md)。 。 。 .

## 捐款

#### 想帮忙吗?

要提交错误, 提供一些代码或改进文档吗 ? 不错!

但是,请先读一下指南 [捐款](https://github.com/Badisi/wdio-harness/blob/main/CONTRIBUTING.md),并了解提交程序、编码规则和其他.

#### \> 行为守则

请阅读并遵循 [行为守则](https://github.com/Badisi/wdio-harness/blob/main/CODE_OF_CONDUCT.md) 帮助我保持这个项目的开放性和包容性.

## 常见问题

### @badisi/wdio-harness 是什么？

WebdriverIO支持角构件测试牵引\.

### 如何安装 @badisi/wdio-harness？

在项目目录运行 npm install @badisi/wdio-harness，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：webdriverio（\>= 10 \< 11）、@angular/cdk（\>= 13 \< 22）、@wdio/logger（\>= 10 \< 11）、@wdio/globals（\>= 10 \< 11）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @badisi/wdio-harness 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @badisi/wdio-harness 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @badisi/wdio-harness 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^16\.14\.0 \|\| \>=18\.10\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @badisi/wdio-harness 可以商用吗？

@badisi/wdio-harness 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @badisi/wdio-harness 的下载量有多少？

根据 npm 官方下载统计，@badisi/wdio-harness 在 2026/10/08 – 2026/11/06 这 30 天内被下载 32,493 次，日均约 1,083 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @badisi/wdio-harness 还在维护吗？

最新版本 5\.0\.0 发布于 2026/10/25（13 天前）；至今共发布 42 个版本，其中过去 12 个月发布了 8 个；首次发布于 2021/11/16。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

