C# 无法使用用于WinApp驱动程序自动化的Inspect.exe获取WPF应用程序的自动化id

C# 无法使用用于WinApp驱动程序自动化的Inspect.exe获取WPF应用程序的自动化id,c#,wpf,visual-studio,inspect,winappdriver,C#,Wpf,Visual Studio,Inspect,Winappdriver,我试图在Visual Studio 2017中使用WinApp驱动程序自动化扩展(WPF)的UI,但在使用Inspect.exe(Windows SDK)捕获元素时找不到自动化id 最初,由Inspect.exe检查时未找到自动化id。因此,我在XAML文件的自动化属性中设置了自动化id,并在VisualStudio中安装了新的VSIX,但在捕获元素时,上面设置的id仍然不可见 但是,在我尝试在如上所述在XAML中设置id/s后捕获UI对象之后,使用inspect element工具,偶尔会出现

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

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

但是,在我尝试在如上所述在XAML中设置id/s后捕获UI对象之后,使用inspect element工具,偶尔会出现自动化id,但它不一致,并且我无法找到它不一致可用/可见的原因

通过使用“FindElementByName”和“FindElementByClassName”,我在某些场景中取得了成功,但我的目的是使用自动化id更准确地捕获元素

下面是我设置AutomationId的XAML代码

Button Content=“Close”Width=“80”Height=“25”Margin=“10,0,0,0”Visibility=“{Binding abc}”Click=“CloseButton\u Click”AutomationProperties.AutomationId=“BtnCloseExample”

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

session.FindElementById(“BtnCloseExample”)。单击(); 线程睡眠(时间跨度从秒(3))

我希望有一种一致的方法来设置和获取自动化id,以便使用FindElementById或xpath。遗憾的是,我也找不到与这个问题相关的好文章

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


谢谢。

如果您试图通过自动化ID定位UI元素,您应该使用
FindElementByAccessibilityId
而不是
FindElementById
(它将查找运行时ID),如本文所述:

我知道一些可能导致这些症状的事情。1.如果控件是在代码中声明的(而不是在XAML中),那么您就没有可用的Id,因为您是在XAML中声明它们的。2.确保使用正确的windowhandle,可能是错误的?您需要检查页面源代码。请参阅“session.getPageSource()”,它是XML。3.不知什么原因,您对源代码所做的更改没有在您正在测试的程序中编译。如果您正在寻找winappdriver资源,我对它们有很好的体验。您好@PixelPlex感谢您提出的想法。我今天会试试,看看有没有相应的改进。干杯Hi@popsiporkkanaa我从一开始就使用FindElementByAccessibilityId,但没有按预期工作。如果可以在inspect工具中捕获按钮,能否在UI元素树中添加按钮与其祖先/子元素关系的屏幕截图/说明?