【问题标题】:Pywinauto - How to wait on specific window title changed among windows with equal windows attributesPywinauto - 如何等待具有相同窗口属性的窗口之间更改的特定窗口标题
【发布时间】:2018-12-01 19:07:59
【问题描述】:

在应用程序中,我创建了一些相同形式的实例(除了句柄之外的所有窗口属性都是相同的)并独立使用它们。在会话表单根据上下文更改自己的标题期间,我需要在表单中的某些操作后等待标题更改。

下一个代码,不要等待,在标题更改之前立即获取窗口:

w = app.window(handle = handle, title_re = '...', class_name='...')
w.wait('ready', timeout = 2)

由于find_elements()函数的工作特性:

if handle is not None:
    return [backend_obj.element_info_class(handle), ]

那么,最好的解决方案是什么?

附:我需要一些表格来加快执行速度,这很重要

当然我可以使用下一个代码:

def check_state():
    windows = app.windows(title = '...', class_name='...')
    for w in windows:
        if handle == w.handle:
            return(True)
    return(False)

pywinauto.timings.wait_until(5, 0.5, check_state, True)

这是最好的解决方案还是我可能跳过了其他内容?

【问题讨论】:

  • 顺便说一句,你认为.wait_property_change(prop=value) 方法对包装对象有用吗?

标签: pywinauto


【解决方案1】:

是的,函数timings.wait_until(...) 足以满足此目的。方法.wait().wait_not() 仅限于窗口规范。 wait_until 是通用的。

.window(...)/.child_window(...) 规范中,搜索条件found_index=i 也很有用。

【讨论】:

  • found_index 允许在找到的元素中通过索引获取某些元素,据我所知。订购找到的元素的标准是什么?
  • 由操作系统排序。我想这是创造的顺序。
  • 谢谢,还有一个问题:为什么.windows(...) 不返回class WindowSpecification() 实例喜欢.window(...)/.child_window(...) 的列表?我很困惑
  • 历史原因。 WindowSpecification 假定搜索条件明确,因此复数名词不应与 WindowSpecification 相关联。但我们计划在未来的版本中添加 .find_all() 并将 .wrapper_object() 重命名为 .find()。 child_window() 将具有短别名 .by()。可以考虑任何其他建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多