我正在尝试使用pywinauto自动化一些应用程序,但有一些步骤我不知道如何解决。
当我在主窗口时,我点击" proces"然后在这之后有可能从3个不同但一次只打开1个窗口。请帮我解决这个问题。
示例:主窗口 - >按钮点击 - >第一个窗口(进程文件)或第二个窗口(您的密码已过期,设置新密码)或第三个窗口(此用户已登录请杀死他的会话并继续或中断) - >处理3个窗口中的1个,但是会显示我不知道 - > ...
答案 0 :(得分:0)
您可以简单地检查第1窗口或第2窗口或第3窗口是否存在:
win1st = app.Window_(title="process file")
win2nd = app.Window_(title="Your password expired, set new password")
win3rd = app.Window_(title="this user is already logged in")
if win1st.Exists(timeout=5): # in seconds
# process win1st
elif win2nd.Exists(): # default timeout is 0.5 sec
# process win2nd
elif win3rd.Exists():
# process win3rd
对于现有窗口,您也可以检查IsVisible()
或IsActive()
值。
方法Wait('ready')
和WaitNot('visible')
对于确保窗口在此处或在外时非常有用。 timeout
可以是一个参数,如果不是默认参数。
更有效的方式(因为之前我们必须等待5秒以上,如果第二或第三个窗口被提升):
from pywinauto.timings import WaitUntil
WaitUntil(5, 0.1, lambda: len(app.Windows_(visible_only=True)) >= 2)
title = app.active_().WindowText()
if title == "1st case":
# process file
elif title == "2nd case":
# change a password
elif title == "3rd case":
# kill session