pywinauto检测是否存在动态控制

时间:2017-04-17 21:01:05

标签: python exists pywinauto

我尝试使用pywinauto在Windows中自动执行标准相机应用程序。

我可以成功调用存在的控件上的点击等,但相机应用程序在从Photo切换到视频时动态切换捕获按钮,因此我需要检测它所处的模式。

from subprocess import Popen
from pywinauto import Desktop
from pywinauto.application import Application

# ====== Take a Photo =======
# Need to get at the Camera app from desktop as there's multiple processes in the UI
dlg = Desktop(backend="uia").Camera
dlgWin = dlg.child_window(title="Camera", class_name="Windows.UI.Core.CoreWindow")

# This fails:
#existFlag = dlgWin.child_window(title="Take Photo", control_type="Button").Exists(timeout =2) 

# Take photo, this works if the control exists:
buttonTakePhoto = dlgWin.child_window(title="Take Photo", control_type="Button")
buttonTakePhoto.click()

这是在照片模式下的控制结构:

enter image description here

在视频模式下:

enter image description here

如何检测是否存在窗口的子控件?我见过的所有示例都使用了一个应用程序实例,自从我将窗口作为桌面的子项后,我就无法使用该实例。

1 个答案:

答案 0 :(得分:1)

没关系,我发誓我试过这个,但它确实有效:

buttonTakePhoto.exists()