pywinauto 没有检测到 child window

pywinauto does not detect child window

我使用的是最新版本的 pywinauto;并使用 PyInspect (uia) 来识别控件。

我正在对一个应用程序进行自动化控制,部分过程是选中 window 上的几个框,这些框在触发 window 从菜单选择中出现后弹出(比如编辑->设置)。

问题是,pywinauto 似乎无法检测到新的 window。我看到成功打开;并且可以在 PyInspect 中将 window 和元素视为应用程序的子 (child?) window。

我试过等待方法,认为自动化发生得太快了——但无济于事。类似于:

mysettings = app['app-name'].child_window(title_re="my target settings window", class_name="#32770").wait('exists', timeout=10)

这只会超时。如果我打印控件标识符,则永远不会包含“我的目标设置 window”。

app['app-name'].print_control_identifiers()

我也在 top_window 上尝试了 set_focus.. 也没有用。我的结论是 pywinauto 无法检测到它的存在。对此有什么想法吗?

我能够解决这个 pywinauto 检测 child window 的问题,以及紧随其后的问题:访问 child window.

首先,我能够通过在应用程序定义中定义 backend='uia' 来让 pywinauto 检测新的 window,如下所示:

app = application.Application(backend='uia')

我之前刚吃过:

app = application.Application()

我的下一个问题是访问 child window 上的元素。正如我预料的那样,我无法直接访问 window:

app['my app']['child window']['textbox'].set_edit_text("hello world")

相反,此代码有效:

app['my app'].child_window(title='child window name').Edit1.set_edit_text("hello world")

虽然我已经解决了我的问题,但我注意到在定义 backend='uia' 之后,进程现在执行起来比以前慢得多。如果任何偶然发现此问题的人在这方面有任何反馈(或优化我上面的努力),请贡献。

谢谢