【问题标题】:Windows UI Automation - Not capturing all subtree elementsWindows UI 自动化 - 不捕获所有子树元素
【发布时间】:2017-02-11 13:16:11
【问题描述】:

我正在尝试捕获特定应用程序的所有子树元素,在某些机器中我获取了所有元素,但在某些机器中,一半的元素(即子元素)丢失了。

FindAll(TreeScope.Subtree, Condition.TrueCondition);

我已尝试安装 Microsoft .NET Framework 4.5,但没有成功

可能是什么问题?为什么 UI 自动化在不同的机器上表现不同?不允许 UI 自动化获取所有子元素的客户端计算机中可能缺少什么?

客户端机器是否也需要Microsoft .NET Framework 4.5 SDK? 系统配置:

开发者机器:(工作正常)

操作系统:Windows 7 Professional

开发应用程序:Visual Studio 2012 Professional

.NET 框架:4.5.2

.NET Framework SDK:4.5

客户端机器:(无法获取子元素)

操作系统:Windows 7 Professional

.NET 框架:4.5

.NET Framework SDK:不适用

开发者机器上没有安装额外的软件,Framework 和 Framework SDK 也仅由 Visual Studio 2012 安装。

获取元素的代码很简单,我试图在鼠标位置获取元素:

System.Windows.Point _location = new System.Windows.Point(Cursor.Position.X,Cursor.Position.Y);

AutomationElement _ele = AutomationElement.FromPoint(_location);

【问题讨论】:

    标签: c# .net-framework-version microsoft-ui-automation


    【解决方案1】:

    我不知道为什么会出现问题,但我已经在一个经过测试的应用程序中看到,有时必须选择父节点并单击以展开其子节点,以便通过自动化查看它们。

    因此,您可以做的是创建自定义查找方法,该方法在尝试检索其子节点之前选择并单击一个节点以展开它。

    【讨论】:

    • 这不仅仅是关于可扩展字段,在许多情况下(机器),可见的子元素(如状态栏中的标签或网格内的元素)也是不可访问的。我试过安装 .Net Framework 4.5 但没有成功。
    • 我们已经尝试过从 4.5 到 4.6.2 的所有 .NET 版本,但没有成功。在所有开发人员机器(安装了 VS)中,它工作正常,环境差异可能是什么?
    • 可能与用户帐户权限不同吗?也许您应该尝试在管理员模式下运行测试...
    • 不,两台机器都以相同的权限运行。视觉工作室是否有可能加速用户权限?仅供参考 - 以非管理权限运行的 Visual Studio .net。
    • 您是否使用 Inspect 或 UISpy 检查了组件树以查看两台机器之间是否存在差异?就是看看是不是白欧自动化的问题……
    【解决方案2】:

    签署我们的 exe 后,我们开始获取所有必需的元素,签署 exe 将增加您的应用程序的访问权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 2012-05-11
      • 2011-03-10
      相关资源
      最近更新 更多