【问题标题】:pywinauto: taking more than one app windowspywinauto:占用多个应用程序窗口
【发布时间】:2010-05-13 20:06:30
【问题描述】:

我有一个 GUI 应用程序,它可以在桌面上创建许多类似的窗口。所有窗口都有相同的标题。我必须枚举所有具有相同标题的对话框并对每个此类对话框进行一些测试。

如果我打电话:

dialog = app['Window Name']

pywinauto 返回一个 WindowSpecification 对象,该对象在通过名称访问控件时很有用。

当我打电话时:

dialogs = app.windows_(title='Window Name')

pywinauto 返回一个 HwndWrapper 实例列表,这些实例不太有用。

如何获取具有指定标题但作为 WindowSpecification 对象的窗口列表?

【问题讨论】:

    标签: python window matching pywinauto


    【解决方案1】:

    你真的不能。 WindowSpecification 是符合所提供标准的所有窗口的单一规范。 当您使用 WindowSpecification 实例时,您通常会与 WindowSpecification 正在为您查找和访问的 HwndWrapper 实例进行交互。

    所以我认为答案是使用 app.windows_() 返回的 HwndWrapper(类似于 WindowSpecification.WrapperObject() 返回的单个 HwndWrapper

    注意 - 如果您总是试图通过查看窗口中的特定控件来缩小窗口列表 - 然后使用 app['Window Name']['Unique Control Name'].Parent() 应该返回窗口.

    WindowSpecification 和 HwndWrapper 的主要区别在于 WindowSpecification 不必存在,而 HwndWrapper 实例反映特定的底层窗口句柄。这允许 WindowSpecification 实现等待窗口或检查它们是否存在的代码。

    【讨论】:

    • 使用 HwndWrapper 我无法将控件作为字典项访问,例如 dialog['window']['control'] 有没有办法从 HwndWrapper 跳转到 WindowSpecification?我的窗口都是一样的,所以我无法搜索并跳转到父级:(
    • 是的 - 你可以。 ws = WindowSpecification({'handle': hwnd_wrapper_instance.handle) 这将创建一个仅匹配一个对话框/控件(具有该特定句柄)的 WindowSpecification。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多