Как дождаться открытия приложения с помощью pywinauto? - PullRequest
2 голосов
/ 20 сентября 2019

У меня есть программа, которую я автоматизировал с помощью pywinauto.После выполнения определенных действий приложение создает временный PDF-файл и открывает его в браузере Chrome.

app.dialog["OKButton"].click_input()

Мой код некоторое время ожидает появления окна Chrome, а затем сохраняет PDF-файл (в Chrome) в нужном месте.

Однако, когда данные достаточно велики, приложению требуется время для создания PDF-файла, а Chrome еще не открыт.

Как дождаться появления Chrome перед подключением к окну приложения Chrome.

time.sleep(action_interval)
app.dialog["OKButton"].click_input()
time.sleep(10)
# Chrome
app2 = Application().connect(title="Statement - Google Chrome")       
app2.WindowSpecification.wait('enabled')
time.sleep(10)
app2['Image Statement - Google Chrome'].type_keys("{VK_CONTROL down}"
                                        "S"
                                        "{VK_CONTROL up}", pause=2)

Это приводит к ошибке

ElementNotFoundError: {'title': 'Statement - Google Chrome', 'backend': 'win32', 'visible_only': False}

Однако, если появляется окно Chrome, эта ошибка не встречается.

1 Ответ

0 голосов
/ 23 сентября 2019

Пожалуйста, прочитайте В ожидании длительных операций главу в документации.

В вашем случае это должно выглядеть так:

# wait flexibly up to 20 seconds
app2 = Application().connect(title="Statement - Google Chrome", timeout=20)
...