跨现有应用程序设置 automationID

Setting automationIDs across an existing application

如果我有一个现有的 WPF 应用程序,并且我想将 automationID 分配给未设置它们的整个应用程序,那么执行此操作的好方法是什么(对于不是动态添加的控件)?某种脚本遍历所有 xaml 文件并添加 automationIDs?

我的目标是使用 winappdriver 编写 ui 测试。

我用谷歌搜索了这个,但没有找到任何似乎符合我要求的东西。也许我误解了结果。 This post 似乎问了同样的问题,但我看不出所提供的答案是一个合适的解决方案。

在 WPF 中,当控件名称 属性 有一个值时,这对应于您将使用 UI 检查器工具(如 Inspect.exe)找到的 AutomationID。看看关于 automationID here 的备注部分。所以应用程序应该已经拥有它的大部分 automationID。

唯一一次我没有控件的 automationID 是在代码中创建控件时。调整 XAML 的脚本在这里对您没有帮助,因为这些控件不会有 XAML。即使您使用了脚本,您也无法确定所有 automationID 都可用。

使用第 3 方控件时,AutomationId 的可用性取决于第 3 方是否支持它。如果它们不支持 AutomationId,您可以将该控件包装在自定义控件中并以这种方式公开 AutomationID。 以下是一些可能有用的资源:

wrapped control

UI automation of a WPF Custom Control

在使用现有应用程序时,我通常只是在操作时为控件填写名称 属性,因此对应用程序的更改量保持在最低限度。