我们有一个测试自动化工具,它大量使用 UI 自动化 API。在最新版本的 Windows(如 Windows 10 21H2、Windows 11)中,apiSystem.AccessViolationException
在调用 AutomationElement 类的方法之一时会引发异常。这是我们的代码:
AutomationElement uiaElement;
....
var cr = new CacheRequest
{
AutomationElementMode = AutomationElementMode.None,
TreeScope = TreeScope.Element,
TreeFilter = Automation.RawViewCondition
};
cr.Add(InvokePattern.Pattern);
cr.Add(TogglePattern.Pattern);
cr.Add(RangeValuePattern.Pattern);
cr.Add(ValuePattern.Pattern);
cr.Add(ItemContainerPattern.Pattern);
cr.Add(VirtualizedItemPattern.Pattern);
var cachedElement = uiaElement.GetUpdatedCache(capabilitiesCacheRequest);
方法GetUpdatedCache
来自AutomationElement
( UIAutomationClient.dll
) 并调用来自UIAutomationCore.dll
被调用的方法RawUiaHPatternObjectFromVariant
- 此方法引发异常,鉴于在早期版本的 Windows 上一切正常,我不确定如何继续。
现在我们只是尝试处理这个异常——当然从长远来看这是不可接受的。
值得一提的是,我们测试过的两个新版本的 Windows 都处于预览/测试状态。在这样的版本中是否有可能某些 API 被“禁用”(当然它们也可能被破坏),有没有人有过这种情况的经验?我在问这两个问题 - 一般解决 System.AccessViolationException 和在 beta/preview 版本中不能正常工作的 API。