我正试图使用waituntilpasses中的pywinauto给应用程序打开新窗口的时间我用斯威比来识别窗户的细节。
为了测试,我手动打开了子窗口,因此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]
    )
)

它总是超时我看不出语法的问题,我试过我能想到的每一种排列方式。
任何提示将不胜感激。

最佳答案

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

08-27 18:28