我正在尝试使用waituntilpassesinpywinauto给应用程序时间打开一个新窗口。我已经使用 SWAPY 来识别窗口细节。
为了测试,我手动打开子窗口,所以WaitUntilPasses应该立即看到这个,但它没有。
语法显示正常,因为我可以找到并打印 的输出find_windows,如下所示:
xx = pywinauto.findwindows.find_windows(
title=u'Choose template', class_name='#32770')[0]
print (xx)
Run Code Online (Sandbox Code Playgroud)
这给出了 789646 的响应
但是在我的 WaitUntilPasses 命令中:
pywinauto.timings.WaitUntilPasses(
20, 0.5,
(pywinauto.findwindows.find_windows(
title=u'Choose template', class_name='#32770')[0]
)
)
Run Code Online (Sandbox Code Playgroud)
它总是超时。我看不到语法问题,并尝试了我能想到的所有排列。任何提示将非常感谢。
小智 5
pywinauto.timings.WaitUntilPasses 等待第三个参数中的函数,而不是函数执行的值(在您的情况下)。
修复 - 转换签入 lambda 函数:
pywinauto.timings.WaitUntilPasses(20, 0.5, lambda: pywinauto.findwindows.find_windows(title=u'Choose template', class_name='#32770')[0])
Run Code Online (Sandbox Code Playgroud)
但我赞成如果你把检查放在一个单独的函数中:
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
Run Code Online (Sandbox Code Playgroud)