当可以从三个不同的窗口显示一个窗口时,如何在一个随机窗口设置焦点

时间:2015-10-30 16:46:21

标签: python find setfocus pywinauto

我正在尝试使用pywinauto自动化一些应用程序,但有一些步骤我不知道如何解决。

当我在主窗口时,我点击" proces"然后在这之后有可能从3个不同但一次只打开1个窗口。请帮我解决这个问题。

示例:主窗口 - >按钮点击 - >第一个窗口(进程文件)或第二个窗口(您的密码已过期,设置新密码)或第三个窗口(此用户已登录请杀死他的会话并继续或中断) - >处理3个窗口中的1个,但是会显示我不知道 - > ...

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
相关问题