AutomationElement.Current.Name出现等待,没有返回

匿名
2025-02-14T01:47:16.2466667+00:00

自动化测试过程中调用AutomationElement.Current.Name 出现了无限等待,并且程序没有抛出异常

同时发现,查询目标窗体的时候也会有同样的问题,加入异步的超时处理无法成功

Dim rootElement = AutomationElement.RootElement.FindFirst(TreeScope.Children, New AndCondition(GetNameProperty(“窗体名称”), GetWindowProperty))

通过debug无法获取到窗体信息,如下图

确认了窗体当前状态为未获取焦点,属性IsEnabled = true , IsOffscreen = false用户的图像

问题1:

当前状态下出现异常等待的原因是什么?

问题2:

针对上述现象请提供解决方案

Windows 商业版 适用于 IT 专业人员的 Windows 客户端 用户体验 其他
开发人员技术 VB
0 个注释 无注释
{count} 票

1 个答案

排序依据: 非常有帮助
  1. Jiachen Li-MSFT 34,221 信誉分 Microsoft 外部员工
    2025-02-14T06:55:46.0066667+00:00

    一些可能导致这个问题的原因:

    1. 目标窗体的 Name 属性为空或不可访问
      • AutomationElement.Current.Name 依赖 UI Automation 提供的属性,某些窗口可能没有正确实现 UI 自动化支持,导致 Name 访问失败或长时间等待。
      • 部分应用(尤其是 Win32 或 WPF)在无焦点时不会返回 Name,或者 Name 依赖某些动态加载数据。
    2. 目标窗体在 UI Automation 树中的状态异常
      • 由于某些安全限制或窗口架构(比如权限问题),FindFirst 可能会卡住。
      • rootElement.FindFirst 可能在查找时遇到隐藏或不可访问的窗口。

    可以尝试下面的方案:


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 **注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知。 **


你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。