pywinauto中的应用程序同步

Application synchronization in pywinauto

如何在 pywinauto 中为我的应用程序进行 application/object 同步? 我们将 UFT 移动到 python+pywinauto。在 UFT 中,有一些随机实例,我们的被测应用程序过去太忙而无法响应操作,或者由于正在执行某些内部处理而没有立即响应 UI 操作(例如单击按钮)。我们已将同步超时默认值设置为 60 秒,UFT 用于等待应用程序自动响应,然后执行操作。 我如何在 pywinauto 中处理这种情况?

pywinauto 中的默认超时为 5 秒。可以全局改(不推荐!):

from pywinauto.timings import Timings
Timings.window_find_timeout = 60

或者您可以在指定控件出现或消失时进行显式等待。它在文档中有更详细的描述:Waiting for Long Operations.

示例:

app.MainWindow.menu_select('File->Open')
app.OpenDialog.wait('ready', timeout=10)
app.OpenDialog.Edit.set_text('file name')
app.OpenDialog.Open.click()
app.OpenDialog.wait_not('visible', timeout=30)
app.ChangedMainWindowTitle.wait('ready', timeout=60)

[编辑] 一种更强大的方法:

# wait until CPU usage is lower than 2.5%
app.wait_cpu_usage_lower(threshold=2.5)

它会一直等到 CPU 这个特定进程的使用率下降(这不是系统范围的 CPU 负载)。有关此方法的更多详细参数,请参阅文档。