在现有应用程序中设置AutomationID

时间:2019-04-02 21:28:39

标签: wpf xaml ui-automation winappdriver

如果我有一个现有的WPF应用程序,并且想为未设置自动化ID的整个应用程序分配自动化ID,那么有什么好办法(对于未动态添加的控件)呢?某种脚本会遍历所有xaml文件并添加AutomationID?

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

我已经在Google上进行了搜索,但没有发现任何可以满足我要求的内容。也许我误会了结果。 This post似乎在问同样的问题,但是我看不出提供的答案是合适的解决方案。

1 个答案:

答案 0 :(得分:0)

在WPF中,当控件名称属性具有值时,该值与您将在UI检查器工具(如Inspect.exe)中找到的AutomationID相对应。查看有关AutomationID here的备注部分。因此,该应用程序应该已经具有大多数自动化ID。

我唯一没有控件的AutomationID是在代码中创建控件时。调整XAML的脚本在这里无济于事,因为这些控件不会使用XAML。即使您使用了脚本,也无法确保所有的AutomationID都可用。

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

wrapped control

UI automation of a WPF Custom Control

在使用现有应用程序时,我通常会随便填写控件的name属性,因此对应用程序的更改量保持最小。