28-设置GUI自动化脚本
20.11 设置GUI自动化脚本
对于自动化那些繁琐的工作,使用GUI自动化脚本是一个很好的方法,但是你的脚本也可能过分挑剔。如果一个窗口在桌面上的位置不对,或者一些弹出式窗口意外地出现,你的脚本可能会在屏幕上单击错误的东西。以下是一些关于设置你的GUI自动化脚本的技巧。
- 每次运行脚本时使用相同的屏幕分辨率,这样窗口的位置就不会改变。
- 你的脚本单击的应用程序窗口应该最大化,这样每次运行脚本时,它的按钮和菜单都在同一个地方。
- 在等待内容加载的过程中,要加入足够的暂停时间;你不希望脚本在应用程序准备好之前就开始单击。
- 使用
locateOnScreen()
来找到要单击的按钮和菜单,而不是依赖x、y坐标。如果你的脚本找不到需要单击的东西,就停止程序,而不是让它继续瞎点。 - 使用
getWindowsWithTitle()
来确保你认为脚本正单击的应用程序窗口是存在的,并使用activate()
方法将该窗口放在前台。 - 使用第11章中的日志模块来保存脚本所做事情的日志文件。这样一来,如果你不得不中途停止你的脚本,你就可以改变它,从它上次结束的地方重新开始。
- 在你的脚本中加入尽可能多的检查。想一想,如果出现一个意外的弹出窗口,或者你的计算机失去了网络连接,它可能会失败。
- 你可能需要在脚本刚开始时监督该脚本的执行,确保它正常工作。
你可能还需要在脚本的开始处设置一个暂停,这样用户可以设置脚本将单击的窗口。PyAutoGUI有一个 sleep()
函数,它的作用与 time.sleep()
函数相同(它只是让你不必在脚本中添加 import time
)。还有一个 countdown()
函数,它可以输出倒计时的数字,给用户一个视觉上的指示,说明脚本即将继续执行。在交互式环境中输入以下内容:
>>> import pyautogui
>>> pyautogui.sleep(3) # Pauses the program for 3 seconds.
>>> pyautogui.countdown(10) # Counts down over 10 seconds.
10 9 8 7 6 5 4 3 2 1
>>> print('Starting in ', end=''); pyautogui.countdown(3)
Starting in 3 2 1
这些技巧让你的GUI自动化脚本更容易使用,并能从不可预见的情况中恢复。