5

我正在尝试使用waituntilpassesinpywinauto让应用程序有时间打开一个新窗口。我已经使用 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]
    )
)

它总是超时。我看不到语法的问题,并且尝试了我能想到的所有排列。任何提示将非常感谢。

4

1 回答 1

5

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
于 2013-10-07T14:09:20.493 回答