@crowecawcaw/xa11y

中文文档
0.15.4发布于 2026/10/24MITTypeScriptCommonJS零依赖构建来源已验证近 30 天下载 38.9万

用于 Node.js 的跨平台访问客户端库

中文使用文档
文档目录9 节
  1. 快速实例
  2. 安装
  3. 默认自动同步
  4. 自动等待定位器
  5. 订阅事件
  6. 等待一个单一的事件
  7. 中止符号支持
  8. 错误
  9. 许可证

@crowecawcaw/xa11y (英语)

npm CI License: MIT Docs

用于Node.js的跨平台无障碍库. 一个API用于macOS,Windows, 和 Linux —— 建在 Rust上方 xa11y 箱子,通过 美洲狮。 。 。 .

使用大小写 : UI 测试, AI代理工具, 桌面自动化, 可访问性 审计.

文档 • 妇女 Java 脚本 API • 妇女 烂API • 妇女 Python API 密码

快速实例

import { App } from '@crowecawcaw/xa11y';

const safari = await App.byName('Safari');

// Find elements with CSS-like selectors via locator
for (const button of await safari.locator('button').elements()) {
  console.log(button.name);
}

// Interact with elements (re-resolves on every call)
await safari.locator('button[name="Submit"]').press();
await safari.locator('text_field[name^="Search"]').setValue('hello world');

安装

npm install @crowecawcaw/xa11y

要求节点.js 18或更新. 为 Linux (x64/arm64), macOS (x64/arm64), 和 Windows (x64/arm64).

马可斯: 授予您的终端( 或运行节点的进程) 2 权限 内 系统设置 ~ 隐私和安全数字 : 无障碍 财务报告和审定财务报表 屏幕 系统音频记录( S) (macOS 26+). 无障碍让xa11y读取 AX 树。 二是需要读取窗口内容. 没有它,只有菜单 栏是可见的。 关于macOS 27和较新的,无障碍提供生活 设备控制和数据访问 窗关.

默认自动同步

触摸无障碍树的每个操作都是同步运行的 因此,节点事件循环永远不会被阻断。 财产获取器 打开 Element 截图是同步的,因为数据在前面被捕获.

const app = await App.byName('com.example.MyApp');
const submit = await app.locator('button[name="Submit"]').element();

console.log(submit.role);   // sync — already captured
console.log(submit.enabled); // sync
await submit.children();    // async — re-queries the provider

自动等待定位器

行动方法 Locator 在元素出现之前对树进行投票 可见 财务报告和审定财务报表 启用最多5秒钟的预算,然后才采取行动。 这样一来 测试对UI的适应能力 同步地充斥.

// Waits until the dialog appears AND its OK button is enabled, then clicks it.
await app.locator('dialog[name="Save Changes?"] button[name="OK"]').press();

订阅事件

订阅扩展节点 EventEmitter这样你就可以使用熟悉的 .on() 编号 : .once() 编号 : .off() API (英语). 事件在以下两种情况下都被释放: 特定类型名称和覆盖 'event' 名称。 打电话 close() (或 通过一个 AbortSignal),以拆掉订阅.

const sub = await app.subscribe();
sub.on('focusChanged', (ev) => console.log('focus moved to', ev.target?.name));
sub.on('event', (ev) => console.log(ev.type, ev.appName));
// ... later
sub.close();

等待一个单一的事件

使用 waitForEvent() 用于 Playwright 风格的一发相等选项 上游和超时 :

const [opened] = await Promise.all([
  app.waitForEvent('windowOpened'),
  app.locator('button[name="Settings"]').press(),
]);

// With predicate + timeout
const ev = await sub.waitForEvent('focusChanged', {
  predicate: (e) => e.target?.role === 'button',
  timeout: 3000,
});

中止符号支持

两者 subscribe() 财务报告和审定财务报表 waitForEvent() 接受一个 AbortSignal 页:1 取消 :

const ctrl = new AbortController();
const sub = await app.subscribe({ signal: ctrl.signal });
sub.on('focusChanged', (ev) => { /* ... */ });
// ctrl.abort() closes the subscription automatically

错误

所有操作投放子类 XA11yError数字 :

类何时
PermissionDeniedError未获得无障碍许可(macOS)
SelectorNotMatchedErrorelement() / 动作未找到
ActionNotSupportedError元素不支持动作
TimeoutErrorA 类 wait* 或自动等待预算已过期
InvalidSelectorError错误的选择器或动作数据
PlatformError其他操作系统级失败

抓住一个特定的子类,让其余的传播:

import { App, SelectorNotMatchedError } from '@crowecawcaw/xa11y';

try {
  await app.locator('button[name="Submit"]').press();
} catch (err) {
  if (err instanceof SelectorNotMatchedError) {
    /* expected miss */
  } else {
    throw err;
  }
}

许可证

麻省理工学院——见 自由主义。 。 。 .

版本与发布记录

@crowecawcaw/xa11y 共发布 20 个版本,首次发布于 2026/04/18;过去 12 个月发布了 20 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.15.4latest2026/10/2417 天前
0.15.32026/10/2120 天前
0.15.22026/09/301 个月前
0.15.12026/09/291 个月前
0.15.02026/09/191 个月前
0.14.02026/09/092 个月前

其他发布通道:placeholder → 0.0.1-placeholder.0。

关于 @crowecawcaw/xa11y 的常见问题

@crowecawcaw/xa11y 是什么?

用于 Node.js 的跨平台访问客户端库

如何安装 @crowecawcaw/xa11y?

在项目目录运行 npm install @crowecawcaw/xa11y,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 xa11y,可以用 npx xa11y 直接运行。

@crowecawcaw/xa11y 支持 TypeScript 吗?

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

@crowecawcaw/xa11y 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@crowecawcaw/xa11y 需要什么版本的 Node.js?

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

@crowecawcaw/xa11y 可以商用吗?

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

@crowecawcaw/xa11y 的下载量有多少?

根据 npm 官方下载统计,@crowecawcaw/xa11y 在 2026/10/11 – 2026/11/09 这 30 天内被下载 388,933 次,日均约 12,964 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@crowecawcaw/xa11y 还在维护吗?

最新版本 0.15.4 发布于 2026/10/24(17 天前);至今共发布 20 个版本,其中过去 12 个月发布了 20 个;首次发布于 2026/04/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。