目录

安装

获取窗体

1. 获取主窗体

2. 获取子窗体

3. 获取所有顶级窗体

4. 获取桌面上的所有窗体

获取元素

元素操作

1. 点击操作

2. 输入文本

3. 调用方法

4. 键盘操作

5. 鼠标操作

示例

打开记事本并输入文本


 

FlaUI 是一个基于微软 UIAutomation 技术的 .NET 库,主要用于对 Windows 应用程序(如 Win32、WinForms、WPF 等)进行自动化 UI 测试。它提供了强大的元素查找和交互功能,支持多种框架,并且易于使用和定制。内部采用异步调用以提高效率,社区也非常活跃。

安装

  1. 1. 确保已安装 .NET 环境:FlaUI 需要 .NET 支持。

  2. 2. 添加 NuGet 包:在 Visual Studio 中右击解决方案,选择“管理 NuGet 包”,搜索并安装 FlaUI.CoreFlaUI.UIA2 和 FlaUI.UIA3

获取窗体

1. 获取主窗体

var app = Application.Launch("notepad.exe");
using (var automation = new UIA3Automation())
{
    var mainWindow = app.GetMainWindow(automation);
}

2. 获取子窗体

var processes = System.Diagnostics.Process.GetProcessesByName("notepad");
var id = processes.First().Id;
var app = FlaUI.Core.Application.Attach(id);
var mainWindow = app.GetMainWindow(automation);
var childWindow = FindWindowByAllChildren(mainWindow, "子窗体标题");

3. 获取所有顶级窗体

var processes = System.Diagnostics.Process.GetProcessesByName("notepad");
var id = processes.First().Id;
var app = FlaUI.Core.Application.Attach(id);
var windows = app.GetAllTopLevelWindows(automation).ToList();
var mainWindow = FindWindowByAllTopLevelWindows(windows, "主窗体标题");

4. 获取桌面上的所有窗体

获取元素

推荐使用 XPath 获取元素,类似于网页中的 XPath,可以方便地定位界面中的任意元素。例如,//Document[@Name="文本编辑器"] 可以定位到记事本中的文本编辑区域。

元素操作

1. 点击操作

var button = mainWindow.FindFirstDescendant(cf => cf.ByText("按钮文本")).AsButton();
button.Click();

2. 输入文本

var textBox = mainWindow.FindFirstDescendant(cf => cf.ByAutomationId("文本框AutomationId")).AsTextBox();
textBox.Enter("输入的文本");

3. 调用方法

var menu = mainWindow.FindFirstDescendant(cf => cf.ByText("菜单文本")).AsMenu();
menu.Invoke();

4. 键盘操作

Keyboard.Type("Hello FlaUI"); // 输入字符串
Keyboard.Press(VirtualKeyShort.BACK); // 按下 Backspace 键
Keyboard.Pressing(VirtualKeyShort.CONTROL); // 按下 Ctrl 键
Keyboard.Press(VirtualKeyShort.Key_A); // 按下 A 键
Keyboard.Release(VirtualKeyShort.CONTROL); // 释放 Ctrl 键
Keyboard.TypeSimultaneously(VirtualKeyShort.CONTROL, VirtualKeyShort.KEY_A); // 同时按下 Ctrl 和 A 键

5. 鼠标操作

Mouse.Click(button); // 点击按钮
Mouse.HorizontalScroll(40); // 水平滚动 40 个单位
Mouse.VerticalScroll(30); // 垂直滚动 30 个单位

示例

打开记事本并输入文本

// See https://aka.ms/new-console-template for more information
using FlaUI.Core;
using FlaUI.Core.AutomationElements;
using FlaUI.UIA3;

Console.WriteLine("Hello, World!");
var app = Application.Launch("notepad.exe");
using (var automation = new UIA3Automation())
{
    var window = app.GetMainWindow(automation);
    var textBox = window.FindFirstDescendant(cf => cf.ByAutomationId("15")).AsTextBox();
    textBox.Enter("Hello FlaUI");
}
app.Close();

引入地址 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐