一、简洁介绍
FlaUI 是一套基于 .NET 的 Windows 桌面应用自动化测试库,支持 Win32、WinForms、WPF、UWP 等多种类型的应用。它基于微软原生 UI Automation 库,提供了更现代、易用的 API,适合自动化测试工程师和开发者实现高效、可维护的 UI 自动化脚本。
UIA(UI Automation)组件树是微软在 Windows 操作系统中提供的一种用于自动化用户界面交互的技术框架。它允许辅助技术### C# FlaUI Windows 自动化框架介绍
二、核心组件
csharp
// 基础引用
using FlaUI.Core; // 核心自动化引擎
using FlaUI.UIA3; // UIA3 模式支持
using FlaUI.Core.Conditions; // 元素查找条件
-
Application 类
管理目标进程生命周期:
csharpvar app = Application.Launch("calc.exe"); // 启动应用 using (var automation = new UIA3Automation()) { var window = app.GetMainWindow(automation); // 获取主窗口 } app.Close(); // 关闭应用
-
元素定位模型
通过条件链精准定位 UI 元素:
csharpvar button = window.FindFirstDescendant( cf => cf.ByName("Add").And(cf.ByControlType(ControlType.Button)) );
-
遍历窗口
-
遍历窗口的节点
三、典型操作示例
-
模拟用户交互
csharpbutton.Click(); // 点击按钮 var textBox = window.FindFirstByXPath("//Edit"); textBox.Enter("123"); // 输入文本
-
控件状态获取
csharpvar isEnabled = button.IsEnabled; // 启用状态 var currentValue = slider.Value; // 滑块数值
-
复杂模式操作
csharp// 处理下拉菜单 var comboBox = window.FindFirstDescendant(cf => cf.ByControlType(ControlType.ComboBox)); comboBox.Expand(); // 展开下拉 comboBox.Select(2); // 选择第三项
四、应用场景
- 自动化测试
- 创建 UI 回归测试套件
- 验证业务逻辑与界面一致性
- RPA 流程
- 自动填写表单
- 批量处理桌面任务
- 辅助工具开发
- 无障碍辅助应用
- 界面状态监控工具
五、环境配置
-
安装 NuGet 包:
bashInstall-Package FlaUI.UIA3 -Version 4.0.0
-
最低系统要求:
- Windows 7 SP1+
- .NET Framework 4.6.1+ 或 .NET Core 3.1+
最佳实践提示:
- 使用
Retry.WhileException()
处理动态加载元素- 结合 XPath 和属性条件提高定位稳定性
- 通过
Inspect.exe
工具分析 UI 元素结构
FlaUI 通过简化 UIA 的复杂操作,显著降低了 Windows 自动化开发门槛,是替代 White 框架或原始 UIAutomationClient 的现代化解决方案。和自动化测试工具访问、遍历和操作用户界面元素。UIA 组件树是这一技术的核心结构之一,它以树形结构组织应用程序中的 UI 元素,便于程序化访问和控制。
FlaUI 具有两个版本,FlaUI2 和 FlaUI3 对应 UIA2 和 UIA3。
UIA2 集成 System.Windows.Automation,适用于 .NET Framework 环境。UIA3 通过 Interop.UIAutomationClient,适用于支持 COM 的所有 Windows 系统
项目 | UIA2 | UIA3 |
---|---|---|
启动速度 | 快 | 稍慢(初始化 COM) |
兼容性 | Win32/WinForms 极佳,WPF/UWP 有缺陷 | WPF/UWP/Win32 均佳,WinForms 有 bug 风险 |
功能覆盖 | 不支持 touch、部分高级属性 | 支持 touch、缓存、连接恢复、事件合并等 |
稳定性 | 老应用更稳定 | 新应用更稳定 |
资源占用 | 低 | 稍高 |