![1b5e1028b7c214d685f74f19d2db7896.png](https://i-blog.csdnimg.cn/blog_migrate/4ce41fe5001618c47b6e1fdbce96a947.png)
本文共3500余字,预计阅读时间12分钟,本文知乎连接:Python自动操作GUI神器PyAutoGUI,本文同步发布于silaoA的博客和微信公众号平台。 关注学习了解更多的Cygwin、Linux、Python技术。
日常使用计算机,命令行程序可以说是为批量操作文件而生,但作为普通用户,最多的还是通过鼠标键盘操作形形色色的图形界面程序。试想下面一个场景:有成千上万个文件,都需要通过图形界面进行同样的一套编辑、保存工作,靠手工一遍一遍地重复做,累死人不说,时间久了必然出现错误,作为程序猿,怎么能忍重复3次以上的工作,必须利用程序自动化。要想图形界面也能像命令行程序那样精确控制,就需要GUI自动化工具了。不得不赞Python生态之丰富,GUI自动化自动化工具也有多种库可选,比如Windows平台的pywin32
,以及本文主角——跨平台的PyAutoGUI
。
目 录
- 0x00 PyAutoGUI简介
- 0x01 PyAutoGUI使用入门
- 安装
- 快速上手
- 1. 通用功能
- 2. 鼠标控制
- 3. 键盘控制
- 4. 消息窗口
- 5. 截图相关
- 0x02 任务示例
- 参考
- 更多阅读
0x00 PyAutoGUI简介
pywin32
直接包装了几乎所有的Windows API,可以方便地从Python直接调用,把Windows API按照功能分了一些大类,每一个大类作为一个模块,常见如win32api
、win32gui
、win32com
等,其中win32com
使用微软独门的COM
接口技术进行进程间通信,可以实现控制GUI程序。但前提是,这些程序得支持COM
接口。win32api
则更加原始,完全通过Win32 API调用获得/生成窗口句柄、发送消息事件,十分繁琐。
PyAutoGUI
的思路与此完全不同,它是接管了鼠标、键盘使用权,基本上完全照搬人的操作,底层不必套牢在Windows系统,没错,它是跨平台的。官网地址:https://github.com/asweigart/pyautogui。原本,这类GUI自动化工具的初衷是给GUI程序自动化测试用,产生点击鼠标、敲击键盘的行为,在日志中记录下消息事件和GUI程序的响应结果,事后分析GUI程序可能存在的bug。不过,既然能产生点击鼠标、敲击键盘的行为,我们就可以用来控制GUI程序批量完成文件编辑、保存工作。
按照官方的说法,PyAutoGUI
给人类用的GUI自动化神器,简单高效、函数分类清晰,它被awesome-python、awesome-python-cn收录。
0x01 PyAutoGUI使用入门
安装
推荐通过pip安装,一行命令搞定。
python -m pip install -U pyautogui
PyAutoGUI
依赖于pyscreeze
、pymsgbox
、pytweening
,上述命令会自动安装这3个库。安装完成后可以发现,在site-packagespyautogui
有6个文件,名字带java、osx、win、x11的是在不同平台的实现方案,再在__init__.py
和__main__.py
中检测当前系统平台进行封装。其中,java平台的实现文件为空,猜测是未来计划支持的,先占个坑。
__init__.py
__main__.py
_pyautogui_java.py # 空文件,猜测是未来支持
_pyautogui_osx.py
_pyautogui_win.py
_pyautogui_x11.py
快速上手
PyAutoGUI
设计简洁,相关符号经过内部import之后,被封装在pyautogui
单个模块中,因此Python程序中只要import pyautogui
之后便可通过.
符号访问pyautogui
中的函数、变量。