FlaUI:.NET 自动化测试 Windows 应用的强大工具

目录

安装

获取窗体

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();

引入地址 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值