【发布时间】:2017-11-02 04:06:19
【问题描述】:
我正在尝试等待特定窗口(我使用顶部窗口中的 children 方法发现该窗口),但似乎 UIAWrapper 没有 wait 方法。
如何在此窗口上使用wait?或者也许将UIAWrapper 对象转换为WindowSpecification 对象?
例如,我可以这样做:
app.top_window().wait("enabled")
但我不能这样做:
app.top_window().children()[0].wait("enabled")
【问题讨论】:
-
从包装器创建窗口规范没有实现,但这是我们正在考虑的有趣功能。这个函数必须考虑很多事情来创建与这个元素完全匹配的规范。目前我把它想象成这样的“试错法”:1.创建一些简单的规范-如果失败,2.创建一些组合规范-如果失败,3.创建更复杂的规范,直到找到这个元素,而不是另一个。这个过程也可以重复用于未来的“记录回放”功能。
-
top_window()非常简单:它创建类似于window(handle=found_hwnd)的规范,但子元素通常没有本机句柄。甚至没有一个属性始终存在于每个元素中。这使您的功能请求变得不那么简单。 -
是的,UIAWrapper 是为已经存在的元素创建的,但是可以为将来出现或已经关闭的元素创建窗口规范。
-
所以 UIAWrapper 确实存在,无需等待。
-
@VasilyRyabov 但是即使元素存在,它仍然可以被禁用或不活动。因此,如果可能的话,我可以在其上使用 'wait("enabled")'
标签: python ui-automation pywinauto