UI Automation API を多用するテスト自動化ツールがあります。Windows の最新バージョン (Windows 10 21H2、Windows 11 など) では、APISystem.AccessViolationException
が AutomationElement クラスのメソッドの 1 つを呼び出すときに例外をスローすることが発生します。コードは次のとおりです。
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
から来て、呼び出されたメソッドを呼び出します- このメソッドは例外をスローし、以前のバージョンの Windows ですべてが正常に動作することを考えると、続行する方法がわかりません。AutomationElement
UIAutomationClient.dll
UIAutomationCore.dll
RawUiaHPatternObjectFromVariant
今のところ、この例外を処理しようとしましたが、もちろん長期的には受け入れられません。
言及すべきことの 1 つは、これをテストした Windows の新しいバージョンは両方ともプレビュー/ベータ状態であることです。そのようなバージョンで特定の API が「無効」になっている可能性はありますか (もちろん、壊れている可能性もあります)、そのような状況の経験がある人はいますか? 私は両方について質問しています-System.AccessViolationExceptionを一般的に解決し、ベータ/プレビューリリースでAPIが正しく機能していません。