跨现有应用程序设置 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
在使用现有应用程序时,我通常只是在操作时为控件填写名称 属性,因此对应用程序的更改量保持在最低限度。
如果我有一个现有的 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
在使用现有应用程序时,我通常只是在操作时为控件填写名称 属性,因此对应用程序的更改量保持在最低限度。