c# - 无法使用 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 应用程序的示例,那将是非常有价值的。
谢谢你。
解决方案
如果您尝试通过自动化 ID 定位 UI 元素,则应使用FindElementByAccessibilityId
而不是FindElementById
(它将查找运行时 ID),如此处所述:https ://github.com/microsoft/WinAppDriver#supported-locators-to-find-ui -元素
推荐阅读
- nuxt.js - NuxtJs 2.0 - 如何避免捆绑客户端不需要的库
- html - Bootstrap Carousel 图像位置中心
- angular - Angular 6 - ngx-mqtt 6.7.0 - 连接建立错误:net::ERR_CONNECTION_REFUSED
- apache-kafka - 如何在 Kafka 或 KSQL 中修改或添加主题的键
- sockets - Socket 不使用 React Native 和 Express 监听
- tcp - 如何将 TCP 流量从外部路由到 Kubernetes 集群内的服务?
- java - java - 如何限制直接调用超类型类的方法,并且只能通过使用子类型实例在java中的子类型类方法访问?
- excel - SSRS 导出到 Excel:仅显示行组过滤器(空白)
- reactjs - 如果未填写所有字段,如何将记录添加到数据库?
- excel - 使用 .selectrow 时 VBA Word 出现错误 438,VBA 不会重新调整打开的 Word?