c# - 使用 C# 的非 WPF 或 Win32 应用程序的 UI 自动化
问题描述
简而言之:我想使用 C# 在 FL Studio 20 中使用 UI 自动化。我知道那里有很多 UI 自动化框架。目前,我正在使用Teststack.White,但这个框架是为 Win32、WinForms、WPF、Silverlight 和基于 SWT 的应用程序设计的。它适用于 FL Studio 20。这就是我的意思:
红色矩形来自 UI 检查工具。这正是 Teststack.White 所看到的。它可以识别容器,但不能识别实际的可点击元素。现在我唯一可以点击按钮的选项是获取容器的位置,然后模拟带有偏移量的鼠标点击。但这只有在显示分辨率保持不变的情况下才有效。
所以我的问题是:是否有任何框架可以处理这些类型的 UI?有谁知道 FL Studio 使用的是什么 GUI 技术?我知道它是用 Delphi 编写的,但这就是我所知道的。
这是使用我上面提到的偏移方法单击按钮的代码(它用于不同的按钮,但代码大致相同):
TestStack.White.Application application = TestStack.White.Application.Launch(@"C:\Program Files (x86)\Image-Line\FL Studio 20\FL.exe");
this.window = application.GetWindow("FL Studio 20", InitializeOption.NoCache);
UIItemCollection coll = window.Items;
Panel itemToClick = null;
foreach (UIItem item in coll)
{
if (item.Name.Contains("Piano roll"))
{
if (((Panel)item).Items.Count == 0)
{
itemToClick = (Panel)item;
break;
}
}
}
window.Focus();
var mouse = window.Mouse;
Point p = itemToClick.Location;
p.Offset(11, 12);
mouse.Click(p);
解决方案
推荐阅读
- aws-lambda - 测试 AWS 无服务器的方法
- matlab - MatLab静默安装等待下一步操作,直到安装完成
- java - 更改用户的权限时刷新 MySQL 连接对象
- spring - Spring RestTemplate 的行为与 Postman 不同
- firebase-storage - 生成下载网址的最佳方式
- javascript - 为什么这个 javascript 函数返回两个不同的值?
- javascript - 如何处理必须拆分为单独部分的数字?
- amazon-redshift - 在 Redshift sql 查询中选择表的顶部/底部 50%
- android - 带有 androidx 导航组件的上下文操作栏
- java - MyRoster 班级有一些问题。特别是我的排序方法和 removeNull 方法