вы пишете, что использовали backend="uia"
, но код Application().start()
использует бэкэнд по умолчанию, который "win32"
.Вы должны использовать Application(backend="uia").start()
, чтобы выбрать «uia».
Примечание: для бэкенда «win32» окно оповещения является окном верхнего уровня.Таким образом, вам нужно app.Success.OK.click()
, чтобы нажать кнопку ОК на нем.Для backend = "uia" окно предупреждения будет дочерним по отношению к "Form1".
EDIT: этот код должен работать:
app.Form1.Success.OKButton.click() # alias of .invoke();
# see IsInvokePatternSupported == True in Inspect.exe
# or
app.Form1.Success.OKButton.click_input() # real click
EDIT2: Это может быть проблема синхронизации.У pywinauto есть тайм-аут по умолчанию 5 секунд, ожидающий появления диалога.Если диалог появляется более чем через 5 секунд, вам нужно что-то вроде этого: app.Form1.Success.wait('visible', timeout=20)
.
Другая возможная проблема - это поведение блокировки app.Form1.Submit.click()
, которое вызывает InvokePattern
.Иногда реализация этого шаблона ожидает закрытия диалога (хотя это проблема приложения).Возможно, вам придется изменить это на app.Form1.Submit.click_input()
.