等待应用程序窗口:Python中的pywinauto.timings.WaitUntilPasses

时间:2013-09-24 13:05:49

标签: python pywinauto

我正在尝试使用waituntilpasses中的pywinauto来提供申请时间来打开新窗口。我使用SWAPY来识别窗口细节。

为了测试我手动打开子窗口,所以WaitUntilPasses应该立即看到它,但它不会。

语法显示正常,因为我可以找到并打印find_windows的输出,如下所示:

xx = pywinauto.findwindows.find_windows(
    title=u'Choose template', class_name='#32770')[0]
print (xx)

这给出了789646的回复

但是在我的WaitUntilPasses命令中:

pywinauto.timings.WaitUntilPasses(
    20, 0.5, 
    (pywinauto.findwindows.find_windows(
        title=u'Choose template', class_name='#32770')[0]
    )
)

总是超时。我无法看到语法问题,并尝试了我能想到的每一个排列。 任何提示将不胜感激。

1 个答案:

答案 0 :(得分:4)

pywinauto.timings.WaitUntilPasses等待第三个参数中的函数,但不是函数执行的值(在您的情况下)。

修复 - 转换你的lambda函数检查:

pywinauto.timings.WaitUntilPasses(20, 0.5, lambda: pywinauto.findwindows.find_windows(title=u'Choose template', class_name='#32770')[0])

但如果您将检查放在一个单独的函数中,我赞成:

def check():
    return pywinauto.findwindows.find_windows(title=u'Choose template', class_name='#32770')[0]

pywinauto.timings.WaitUntilPasses(20, 0.5, check) #Important: 'check' without brackets