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

Python 当可以从三个不同的窗口中显示一个窗口时,如何在一个随机窗口上设置焦点,python,find,setfocus,pywinauto,Python,Find,Setfocus,Pywinauto,我正在尝试使用pywinauto自动化一些应用程序,但有一些步骤我不知道如何解决 当我在主窗口时,我单击“进程”按钮,然后可以从3个不同的窗口打开1个窗口,但一次只能打开1个。请帮我解决这个问题 示例:主窗口-->但单击-->第一个窗口(进程文件)或第二个窗口(密码已过期,请设置新密码)或第三个窗口(此用户已登录,请终止其会话并继续或中断)-->处理3个窗口中的第1个,但将显示哪些窗口我不知道-->…您只需检查第一个、第二个或第三个窗口是否存在: win1st = app.Window_(tit

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

当我在主窗口时,我单击“进程”按钮,然后可以从3个不同的窗口打开1个窗口,但一次只能打开1个。请帮我解决这个问题


示例:主窗口-->但单击-->第一个窗口(进程文件)或第二个窗口(密码已过期,请设置新密码)或第三个窗口(此用户已登录,请终止其会话并继续或中断)-->处理3个窗口中的第1个,但将显示哪些窗口我不知道-->…

您只需检查第一个、第二个或第三个窗口是否存在:

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')
有助于确保窗口在这里或外面<代码>超时如果不是默认值,则可以是参数


更有效的方法(因为之前,如果第二个或第三个窗口出现,我们必须等待5秒以上):


因此,问题是如何捕获其中一个可能出现的窗口?您是要自动创建一个新窗口,还是只确定打开了哪个窗口?捕获并自动执行,但在大多数情况下,情况是这样的:第一个窗口应该最常出现(最不可分离且最重要),第二个窗口可能每月出现几次,至少还有第三个窗口。但是,如果第二个或第三个窗口将出现,我需要捕捉它们,自动化,然后它应该最终打开第一个窗口(最重要和最期待的)。第二个窗口和第三个窗口是正确的第一个窗口之前唯一的障碍。我想可能有一些标题为_re+text()+的东西会有用,但是你的第二个方法非常相似。我会尝试这种方法。当然,使用类似于
app.Window_u2;(title_re=“process file | pwd expired |另一个用户登录”)。等待('ready',timeout=10)
看起来也不错。也许它甚至比使用相当低级的
waitill
函数更好。
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