猿问

AutomationElement.RootElement.FindFirst 总是返回 null

我有一个要求可能需要使用 UI 自动化之类的东西,所以我正在尝试学习基础知识,但我运气不佳。

我在不同文章的几个示例中找到了这行代码:

var calcWindow = AutomationElement.RootElement.FindFirst(TreeScope.Children,new PropertyCondition(AutomationElement.NameProperty, "Calculator"));

但是每当我运行这条线时,calcWindow 都是空的。我注意到当我运行 2 个计算器实例时,它将被设置为一个值。

同样的问题适用于 RootElement.FindAll,当计算器的单个实例运行时它返回 null,但当我运行 2 个实例时,它将返回一个值,并且它的 .Count() 属性设置为 1。

有什么想法吗?

谢谢。


慕田峪9158850
浏览 495回答 1
1回答

富国沪深

在 Windows 10 中,计算器是一个 UWP 应用,因此您需要使用不同的方法来找到它。以下是FlaUI如何获取新计算器与旧计算器的示例。FlaUI 是在托管 UIAv2 API 和非托管 UIAv3 COM 包装器之上编写的。    protected override Application StartApplication()    {        if (OperatingSystem.IsWindows10())        {            // Use the store application on those systems            return Application.LaunchStoreApp("Microsoft.WindowsCalculator_8wekyb3d8bbwe!App");        }        if (OperatingSystem.IsWindowsServer2016())        {            // The calc.exe on this system is just a stub which launches win32calc.exe            return Application.Launch("win32calc.exe");        }        return Application.Launch("calc.exe");    }
随时随地看视频慕课网APP
我要回答