rob*_*rob 5 wpf ui-automation inspect microsoft-ui-automation
我正在尝试使用 MS UI Automation 来测试 WPF 应用程序,并使用 Windows SDK 中包含的检查对象工具 (inspect.exe) 来查找某些元素的 AutomationId 属性。
Inspect 对我来说表现得很奇怪:
如果我关闭所有应用程序并启动 WPF 应用程序和检查,检查将能够查看各种 UI 元素的 AutomationId 属性。没有 AutomationId 的元素仅显示两个引号,表示空字符串 ("")。
在 WPF 应用程序中执行一些操作后,inspect.exe 挂起,我必须终止它并重新启动它。尽管机器的 CPU 和 RAM 利用率约为 50% 或更低,但我尝试等待几分钟(有几次可能接近 20 或 30 分钟),但无济于事。
我尝试按照/sf/answers/548360991/中的建议正常运行检查并以管理员身份运行检查,并且无论哪种方式,它的行为都是相同的。
如果有的话,我做错了什么?我是否太不耐烦了,我是否需要等待很长时间而不是假设检查已挂起?为什么检查关于 AutomationId 的行为会有所不同?
Inspect.exe 有多个版本。据我所知,最新的版本是 2012 年的,在帮助/关于对话框中显示版本为 7.2.0.0。
旧版本的左侧没有树视图,所有检测到的自动化元素都显示在树中,因此很容易检查您是否使用了正确的视图。
最新的工具工作得相当正确,但是,恕我直言,迄今为止使用 UI 自动化的最佳工具是Visual UI Automation verify。它是一个 .NET 程序,其源代码可在此处获取: UI 自动化验证 (UIA 验证) 测试自动化框架。
请注意,虽然它是一个 .NET 程序,但它不使用标准 .NET 自动化 dll(更多信息请参见:UISpy.exe 和 Inspect.exe 的区别是什么?(来自 Microsoft Windows SDK))。
关于AutomationId属性,为了澄清我对这个问题的最初评论,我的意思是它的有用性取决于您尝试自动化的程序。
如果您作为开发人员拥有它,那么它显然很有趣。例如,如果您正在使用 WPF,则可以使用该x:Uid属性,它显然是用于 UI 自动化。在 Winforms 空间中,它也非常有用,因为 UI 自动化默认情况下将使用控件的AccessibleName并恢复为作为 AutomationId 值的后备名称。
但有许多应用程序不依赖于.NET(浏览器、本机应用程序等)。通常,对于这些应用程序,使用其他属性更容易。
| 归档时间: |
|
| 查看次数: |
3404 次 |
| 最近记录: |