1

我已经开始使用 FlaUI 来自动化我的胖客户端 .net 应用程序。该应用程序是基于 Windows 窗体的。开始是好的,Login Form 被识别出来了,我可以登录,但是后来死路一条,我发现应用程序中的几乎所有东西都是作为 Pane 控件类型开发的。

因此,有网格、表格等,但当我使用 Inspect.exe 或 FLAUInspect 工具查看对象层次结构时,它们都只是显示为窗格类型。他们的财产中没有真正出现,所以似乎什么都无法读取。但在放弃之前,我只是想在这个论坛上与有经验的观众核实一下,是否真的有任何方法可以从 Pane 对象中获取数据。

请建议是否有任何方法,即使这意味着使用 UIAutomation、TestStack.White 等其他库。

更新:我现在对此了解不多。因此,窗格中的对象是在 syncfusion 和 devexpress 中开发的。是否可以使用 FlaUI 或 UIAutomation 或 TestStack.White 等识别在 syncfusion 和 devexpress 中开发的对象?

4

2 回答 2

0

我不知道您是否已经尝试过以下步骤。您是否在 xaml 代码中将automationId添加到您的对象中:

AutomationProperties.AutomationId="AnyID"

在测试代​​码中,首先初始化应用程序的主窗口。

MainWindow = fApplication.GetMainWindow(fAutomation, null)?.AsWindow()

之后,您可以通过automationId找到您的对象,例如:

MainWindow .FindFirstDescendant(cf => cf.ByAutomationId(AnyID))

我是这样做的,不必知道我的应用程序的层次结构。也许这会起作用?

于 2021-03-23T15:19:58.890 回答
0

现在大多数 UI 框架都完全支持 UI 自动化。因此,首先确保您拥有框架的最新版本(syncfusion、devexpress)。此外,一些框架提供了启用 UI 自动化的设置。像 devexpress 一样,你需要设置

ClearAutomationEventsHelper.IsEnabled = false;

在您的应用程序开始进行测试,以便向 FlaUI 公开更多的东西(如选项卡)。

于 2021-04-07T14:06:51.723 回答