如何使用 pywinauto 等待应用程序打开?

How to wait for an application to open using pywinauto?

我有一个使用 pywinauto 自动化的程序。 执行某些操作后,应用程序创建一个临时 pdf 并在 chrome 浏览器中打开它。

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

我的代码等待一段时间 chrome window 出现,然后将 pdf(在 chrome 中)保存到所需位置。

但是,当数据足够大时,应用程序需要时间来生成 pdf 并且 chrome 尚未打开。

如何在连接到 chrome 应用程序之前等待 chrome 出现 window。

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}

但是如果出现chromewindow,则不会遇到这个错误。

请阅读文档中的 Waiting for Long Operations 章节。

在你的情况下应该是这样的:

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