为了账号安全,请及时绑定邮箱和手机立即绑定

AutomationElement.RootElement.FindFirst 总是返回 null

AutomationElement.RootElement.FindFirst 总是返回 null

C#
慕田峪9158850 2021-08-22 15:09:30
我有一个要求可能需要使用 UI 自动化之类的东西,所以我正在尝试学习基础知识,但我运气不佳。我在不同文章的几个示例中找到了这行代码:var calcWindow = AutomationElement.RootElement.FindFirst(TreeScope.Children,new PropertyCondition(AutomationElement.NameProperty, "Calculator"));但是每当我运行这条线时,calcWindow 都是空的。我注意到当我运行 2 个计算器实例时,它将被设置为一个值。同样的问题适用于 RootElement.FindAll,当计算器的单个实例运行时它返回 null,但当我运行 2 个实例时,它将返回一个值,并且它的 .Count() 属性设置为 1。有什么想法吗?谢谢。
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

在 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");

    }


查看完整回答
反对 回复 2021-08-22
  • 1 回答
  • 0 关注
  • 494 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信