内容
WayDriver
[
[](https://crates.io/crates/waydriver)
[](docs.rs/waydriver)
[](https://waydriver.io)
[](LICENSE)
**无界面 GUI 应用测试在 Wayland** WayDriver 在隔离的无界面合成器会话中启动 GTK 应用-SPI 无障碍树驱动它们,并通过 PipeWire 捕获截图M 视频 - 不需要物理显示。
它有两种形式:
`waydriver`](https://crates.io/crates/waydriver 一个用于编写无界面 GUI 测试的 Rust 库。
- **`waydriver`** — 一个独立的 [Model Context Protocol](https://modelcontext) 服务器,允许 AI 助手(Claude Code、Claude)直接驱动 GTK4 应用。
> 📖 **完整文档 - API 参考和架构说明 - 请访问 [waydriver.io](https://waydriver.io)。**
## 演示
下面的剪辑是 [`_calculator` 示例](crates/waydriver-examples/examples/gnome_calculator.rs)(`cargo run -p waydriver-examples --example gnome_calculator`)的完整输出:会话生命周期、AT-SPI 按钮点击、键盘和弦、输入的单位转换以及通过 XPath 定位器的逐步验证 - 由 WayDriver 通过 PipeWire 记录。
<video src="https://github.com/user-attachments/assets/96480250-0e78-4cd7-8228-d5e0620b4ca1" controls width="640"></video>
## 功能
- **无界面** — 运行一个真实的 Mutter 合成器,没有连接显示器;非常适合 CI。
- **精确** — 通过 AT-SPI 树使用 XPath 1.0 定位小部件;操作自动等待可见性和启用。
- **真实输入** — 通过完整的 Wayland 管道(Mutter RemoteDesktop)进行键盘和指针事件,以及直接 AT-SPI 操作。
- **捕获** — 通过 PipeWire 进行 PNG 截图和完整的会话 VP8/WebM 记录。
- **AI 就绪** — `waydriver-mcp` 通过 MCP 为 AI 助手公开整个表面。
- **隔离** — 每个会话都有自己的合成器、私有 D-Bus 和应用设置,因此不会触及您的真实桌面。
## 快速开始
### 在编写测试
```sh
waydriver waydriver-com waydriver-input-mutter-capture-mutter
```
有一个运行中的会话,请使用定位器驱动应用:
// 操作自动等待且启用后再触发。
session.locate("//Button[@name='primaryclick().await?;
session.locText[@name='search']").set_text("hello").await?;
session.press_chord("Ctrl+Shift+S").await?;
let png = session.take_screenshot().await?;
```
→ [入门指南](https://waydriver.io/getting-started.html) 介绍了系统需求和一个完整的可运行示例。完整的动作表面在 [Locator API](https://waydriver.io/guide/locators.html) 参考中。
### 从 AI 助手驱动应用(MCP)
预构建的镜像已发布到 GHCR。将您的 MCP 客户端(例如 Claude Code 的 `.mcp.json`)指向运行时镜像:
```json
{
"mcpServers": {
"waydriver-mcp": {
"command": "sh",
"args": ["-c", "docker run --rm -i --network none -v \"$PWD:/workspace:ro\" -v /tmp/waydriver:/tmp/waydriver ghcr.io/bohdantkachenko/waydriver-mcp:latest"]
}
}
}
```
→ [MCP 服务器指南](https://waydriver.io/guide/mcp-server.html) 涵盖了完整的工具参考、在匹配的容器中构建应用以及每个会话的选项。
## 后端支持
WayDriver 是与后端无关的 - 三个特征(`CompositorRuntime`、`InputBackend`、`CaptureBackend`)定义了接口。目前实现了 **GNOME/Mutter**;KWin 和 Sway 可以作为兄弟 crate 添加,无需触及核心。请参阅 [架构](https://waydriver.io/architecture.html) 了解其工作原理。
## 贡献
欢迎贡献。开发设置、构建/测试命令和架构深入探讨位于 [`AGENTS.md`](AGENTS.md) 和 [贡献指南](https://waydriver.io/contributing.html)。
## 许可证
根据 [Apache License 2.0](LICENSE) 许可。