不同版本的Windows上的UI自动化的AutomationId不一致

时间:2019-07-01 08:21:31

标签: .net windows automation ui-automation uia

我正在使用UI自动化框架(.net 4.6.1)自动化应用程序。

使用Visual UI Automation Verify检查应用程序时,我可以看到AutomationId属性的值。

我已经用C#(wpf)编写了一个小型自动化脚本

当我在Windows 7上执行自动化脚本时,一切正常。

在Windows 10上尝试时,所有AutomationId值都为空字符串。

示例代码:

AutomationElement.RootElement.FindFirst (
  TreeScope.Descendants, 
  new PropertyCondition(AutomationElement.AutomationIdProperty, myAutomationId)
);

此示例返回null,因为它找不到具有myAutomationId值的元素,当我浏览AutomationElement.RootElement的所有子级时,我发现AutomationId值是空的(与我在{{ 1}},与在Windows 7上运行时得到的不一样

我缺少关于Visual UI Automation Verify属性的东西吗?或关于如何 UI自动化框架可以在Windows 10上运行?

编辑:

我注意到,当我遍历子元素时,我发现其中的一些元素的AutomationId的值为NativeWindowHandle。为什么?

编辑2:

我尝试了范围广泛的具有多个版本的UI自动化dll,但没有一个甚至无法在Windows 10上找到该应用程序。

AutomationId也是如此(在Windows 7上也不起作用)。

1 个答案:

答案 0 :(得分:1)

可以正常工作的UIA是 UIAutomationClient.dll (如果需要,可以添加UIAutomationTypes.dll)

它直接使用自动化接口:

IUIAutomation uiautomation = new CUIAutomation();

以此类推...