«Операция недействительна из-за текущего состояния объекта». при использовании UIAutomation нажимать на кнопку через InvokePattern - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть следующий фрагмент кода:

LOG.Debug("Getting Invoke Pattern");
var invokePattern = (InvokePattern)myButton.GetCurrentPattern(InvokePattern.Pattern);
LOG.Debug("Clicking");
invokePattern.Invoke(); // <- boom

Приложение стороннее, кнопка нажимается. Где я написал boom, получаю и InvalidOperationException, трассировка стека в коде MS выглядит следующим образом:

at MS.Internal.AutomationProxies.Misc.ThrowWin32ExceptionsIfError(Int32 errorCode)
at MS.Internal.AutomationProxies.Misc.SendInput(Int32 inputs, INPUT& ki, Int32 size)
at MS.Internal.AutomationProxies.Input.SendKeyboardInputVK(Int16 vk, Boolean press)
at MS.Internal.AutomationProxies.Misc.SetFocus(IntPtr hwnd)
at MS.Internal.AutomationProxies.WindowsButton.Invoke()
at MS.Internal.AutomationProxies.WindowsButton.System.Windows.Automation.Provider.IInvokeProvider.Invoke()
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at MS.Internal.Automation.UiaCoreApi.CheckError(Int32 hr)

Выглядит так, как будто происходит сбой при попытке сфокусировать кнопку. Действительно, когда я пытаюсь «перемещаться» в приложении, я никогда не оказываюсь на кнопке. Что еще я могу попробовать?

...