【问题标题】:pywinauto detect if dynamic control existspywinauto 检测是否存在动态控制
【发布时间】:2017-09-13 13:06:56
【问题描述】:

我正在尝试使用 pywinauto 自动化 Windows 中的标准相机应用程序。

我可以成功调用现有控件的点击等,但相机应用程序在从照片切换到视频时会动态切换捕获按钮,因此我需要检测它处于哪种模式。

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()

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

在视频模式下:

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

【问题讨论】:

    标签: python exists pywinauto


    【解决方案1】:

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

    buttonTakePhoto.exists()

    【讨论】:

    • 默认超时为 5 秒。所以 timeout=2 可能不起作用,因为它在 2 秒后仍然不存在。但我推荐buttonTakePhoto.wait('visible', timeout=5) 而不是.exists()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 2018-06-06
    • 1970-01-01
    • 2021-07-18
    • 2011-10-23
    相关资源
    最近更新 更多