我正在使用 Python 的 PyAutoGUI 库来自动化 GUI。在当前窗口上完成数据输入后,我正在自动化的应用程序会打开一个新窗口。一切都由 python 自动化处理(当前窗口中的数据输入以及打开窗口所需的单击)。
在当前窗口中执行单击时,新窗口需要一些时间才能打开(可能在 2 - 5 秒范围内)。所以我在这里可以想到两个选择:
- 睡眠使用
time.sleep(5)
(缺点:可能会不必要地浪费 3 秒)
- 紧紧地旋转,直到窗口出现在屏幕上。 PyAutoGUI 提供了
locateOnScreen
函数可用于查明窗口是否确实出现在屏幕上。 (然而,这是CPU密集型的,并且函数本身也是CPU密集型的,并且需要将近2秒的时间才能返回)
所以看起来 [1] 对我来说是更好的选择。我可能错过了其他一些比这两种方法更好的技术吗?谢谢。
仅适用于 Windows GUI 自动化pywinauto http://pywinauto.github.io/功能更全面(并且Pythonic)。它隐式等待一些默认时间并允许显式等待(内部有一些 CPU 非密集型循环:类似 0.1 秒的暂停并快速检查更改,然后再次等待)。
PyAutoGUIlocateOnScreen
功能使用屏幕截图的高级分析。这就是为什么它如此占用 CPU 资源(但跨平台)。
pywinauto 示例:
from pywinauto import Application
app = Application(backend="win32").start(u'your_app.exe')
app.MainWindow.menu_select(u'File->Open')
app.OpenDialog.Edit.set_edit_text(u'some path')
app.OpenDialog.Open.click()
app.OpenDialog.wait_not('visible', timeout=10)
new_main_window = app.window(title_re='^.* - The Software$')
new_main_window.wait('ready', timeout=15)
入门指南 https://pywinauto.readthedocs.io/en/latest/getting_started.html是学习 pywinauto 核心概念的良好起点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)