我正在使用Python的PyAutoGUI库来自动化GUI.在我完成当前窗口上的数据输入后,我自动化的应用程序将打开一个新窗口.一切都由python自动化(当前窗口中的数据输入和打开窗口所需的点击)来处理.
在当前窗口中执行单击时,新窗口需要一些时间才能打开(可能介于2 - 5秒之间).所以我可以在这里考虑两个选项:
睡觉使用time.sleep(5)
(Con:3秒可能会浪费不必要的)
旋转紧密循环,直到窗口出现在屏幕上.PyAutoGUI提供了一个locateOnScreen
功能,可用于查明窗口是否实际出现在屏幕上.(但是,这是CPU密集型的,并且该功能本身是CPU密集型的,并且需要大约2秒才能返回)
所以它看起来[1]对我来说是一个更好的选择.还有其他一些我可能错过的技术会比这两种方法更好吗?谢谢.
对于Windows,GUI自动化pywinauto功能更强大(和pythonic).它隐式等待一些默认时间并允许显式等待(内部有一些CPU非密集循环:0.1秒暂停,快速检查更改,然后再等待).
PyAutoGUI locateOnScreen
函数使用屏幕截图的高级分析.这就是为什么它如此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)
入门指南是学习pywinauto核心概念的一个很好的起点.