【问题标题】:AutomationElement is still alive?AutomationElement 还活着吗?
【发布时间】:2016-08-28 23:17:30
【问题描述】:

我正在使用 Microsoft UI 自动化并遇到一些问题,一个是我想知道 AutomationElement 是否仍然存在。更准确地说,我想检查一个窗口是否已关闭。我认为这是此类问题最常见的情况,我尝试了不同的场景,最终得到了一个解决方案,我尝试访问元素的不同属性并查看它是否会引发 ElementNotAvailableException。我还偶然发现了一个名为 IsOffscreen 的属性,它在这种情况下似乎很有帮助。但是,由于我在网上找不到太多关于此的信息,我想知道是否有更好的解决方案。最近几天我对这个框架不太满意,因为它对我来说似乎很不稳定(尤其是在找到一个 AutomationElement 时)。也许您可以帮助我在实施过程中获得更多专业知识。

非常感谢

马塞尔

【问题讨论】:

  • 让它告诉你,使用WindowClosed event
  • 我在事件中遇到了一些不好的经历,这就是为什么我还没有尝试过。我会再给它一次机会。 :)

标签: c# .net ui-automation microsoft-ui-automation automationelement


【解决方案1】:

在获取 AutomationElement 之前,您可能会捕获 ElementNotAvailableException

try 
{
  var info = automationElement.Current;
  var name = info.Name;
}
catch (ElementNotAvailableException) {}

【讨论】:

    【解决方案2】:

    我会将它包装在一个扩展中:

    public static bool Alive(this AutomationElement ae)
    {
        try
        {
            var t = ae.Current.Name;
            return true;
        }
        catch(ElementNotAvailableException)
        {
            return false;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多