只要系統被鎖定,調用Invoke()方法(從System.Windows.Automation.InvokePattern)就會失敗。將我們的項目遷移到.NET 4.5.2後會看到此行爲。而在.NET 4.0中,即使系統被鎖定,調用也可以工作。當系統被鎖定時,UIA InvokePattern.Invoke()會拋出異常。 (在.NET 4.5.2中)
使用的DLL是UIAutomationClient.dll,v4.0.0.0。
我得到的例外是:
System.InvalidOperationException了由用戶代碼未處理 消息=操作無效由於對象的當前狀態。
我知道UIA的GUI測試通常需要系統解鎖。由於此調用在.NET 4.0中鎖定系統時正常工作,我希望在遷移後具有相同的行爲。
您確定它與.NET版本有關嗎?在相關的代碼中沒有任何明確地拋出'InvalidOperationException',所以它可能直接來自COM Automation API。根據文檔,「元素不支持InvokePattern控件模式或隱藏或阻止」,所以你所做的絕對不被支持,從來沒有。 – Luaan