0

我们有一个测试自动化工具,它大量使用 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。

4

1 回答 1

0

您可能需要完全关闭 Windows UAC和 Defender/ SmartScreen,并将清单添加到 exe 以在提升的帐户下运行测试。

于 2021-07-30T12:54:05.647 回答