首页 > 解决方案 > 无法使用 Inspect.exe 获取 WPF 应用程序的自动化 ID 以实现 WinApp 驱动程序自动化

问题描述

我正在尝试使用WinApp 驱动程序在 Visual Studio 2017 中自动化扩展的 UI(WPF),但在使用Inspect.exe(Windows SDK)捕获元素时找不到自动化 ID

最初,在 Inspect.exe 检查时没有找到自动化 ID。因此,我在 XAML 文件的自动化属性中设置了自动化 ID,并在 Visual Studio 中安装了新的 VSIX,但在捕获元素时上述设置的 ID 仍然不可见。

但是在我如上所述在 XAML 中设置 id/s 后尝试捕获 UI 对象后,使用检查元素工具,偶尔会出现自动化 id 但它不一致,我找不到它不可用/不可见的原因始终如一。

通过使用“FindElementByName”和“FindElementByClassName”,我在某些情况下取得了成功,但我的意图是使用自动化 ID 更准确地捕获元素。

下面是我设置 AutomationId 的 XAML 代码;

Button Content="Close" Width="80" Height="25" Margin="10,0,0,0" Visibility="{Binding abc}" Click="CloseButton_Click" AutomationProperties.AutomationId="BtnCloseExample"

下面是我设置 id 以在我的测试项目中捕获元素的代码行;

session.FindElementById("BtnCloseExample").Click(); Thread.Sleep(TimeSpan.FromSeconds(3));

我希望以一致的方式设置和获取自动化 ID,以便使用 FindElementById 或 xpath。可悲的是,我也找不到与此问题相关的好文章。

请阐明并提供一些指导方针来完成这项任务。如果可能的话,如果有人可以发布自动化 wpf 应用程序的示例,那将是非常有价值的。

谢谢你。

标签: c#wpfvisual-studioinspectwinappdriver

解决方案


如果您尝试通过自动化 ID 定位 UI 元素,则应使用FindElementByAccessibilityId而不是FindElementById(它将查找运行时 ID),如此处所述:https ://github.com/microsoft/WinAppDriver#supported-locators-to-find-ui -元素


推荐阅读