用Python实现PC端应用自动化的准备工作(pyautogui\pywinauto)

本文适用对象是解决小白在上手自动化在工具选择上的疑惑,以及本人使用的工具及其准备工作上可能遇到的问题。同时文章主要目的是解决一些前期准备工作上可能遇到的问题,而不是硬核的“教学教程”。详细的使用方法可以看官方说明文档或相关视频、文章深入学习 。
前提
安装好Python3.0以上(没安装的应该搜不到这篇文章)
实现自动化的方法
第三方库,有两个是大概率会用到的库,一个是pywinauto,另一个是pyautogui。
第三方库的安装与使用文档:https://pypi.org/

pywinauto介绍:https://www.bilibili.com/video/BV14Y4y1z7z6(教程推荐)
pywinauto是一组Python模块,用于自动化Microsoft Windows GUI。可以让你向窗口对话框和控件发送鼠标和键盘操作,也支持更复杂的控件操作。可以用它来进行软件测试、质量保证或用户界面开发。
pywinauto可以实现以下功能
应用控制:可以打开、关闭、连接、杀死应用进程等。
窗口控制:可以获取、激活、最大化、最小化、移动、调整窗口大小等。
控件操作:可以查找、点击、编辑、选择、拖动、滚动等各种控件。
鼠标和键盘模拟:可以发送鼠标和键盘事件到任意窗口或控件。
文本获取和设置:可以获取和设置窗口或控件的文本内容。
截图:可以对窗口或控件进行截图并保存为图片文件。
准备工作:安装使用pip命令即可,打开命令窗口输入 pip install pywinauto。
用于查看应用控件信息的小工具:spy++(spyxx),inspect,viewwizard
官方文档介绍的上述前两个工具是windows自带的,实际上是在安装Visual Studio后才会有的。Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 (microsoft.com)

安装最新的社区版即可。安装过程中在工作负荷中记得勾选“通用Windows平台开发”。

同时在单个组件中找到“C++核心功能”勾选,至于其它配置则无要求。如果安装vs后找不到spy++和inspect这两个工具看一下有没有漏选图中所示。

当然除了通过安装vs后自带spy++、inspect,还可以单独只安装这两个工具(不想安装vs的话)。前者一步到位更省事。但是后者的话在单独安装后还需要额外再进行其他配置,才能单独运行,需要单独安装的可自行搜索教程。
至于最后一个工具viewwizard,需要单独下载,看个人需要。(链接: https://www.52pojie.cn/thread-1570301-1-1.html)
个人使用体验
通过模拟应用的使用来达到自动化的效果,涉及到控件的获取与操作,同时需要使用到多个辅助工具来获取控件信息。前期配置要麻烦一些,总体使用下来感觉操作起来要复杂不少,同时耗费的精力更多。适合想深入学习的,如果只是想做一些简单的自动化操作脚本则不推荐。
pyautogui介绍:https://zhuanlan.zhihu.com/p/302592540(可以参考一下)
pyautogui是一个跨平台的GUI自动化Python模块。可以让你用Python脚本控制鼠标和键盘,实现与其他应用程序的交互。pyautogui有以下特点:
简单易用:API设计得很简单,只需要几行代码就可以实现鼠标和键盘的操作。
跨平台:支持Windows、macOS和Linux系统,也支持Python 2和3版本。
图像识别:对屏幕进行截图,并根据给定的图像(例如按钮或复选框)在屏幕上找到。
窗口管理:定位应用程序的窗口,并移动、调整大小、最大化、最小化或关闭(仅限Windows系统)。
消息框:显示警告和消息框。
准备工作:安装使用pip命令即可,打开命令窗口输入 pip install pyautogui。不需要其它辅助工具。
个人使用体验:
简单易上手,具备一般的理解能力即可,可以做到边看官方使用文档边编写代码运行。虽然功能上比pywinauto少,具体能实现怎样的操作还是取决于个人的想象力了。

使用pyautogui关键是获取鼠标位置的坐标,inspect工具可以直观的看到当前鼠标坐标,还是挺好用的。当然官方文档也有教如何通过循环打印来获取当前鼠标坐标。(当然也有其它工具)

总结:pyautogui是模拟人的键鼠操作实现对重复工作的自动化;pywinauto则是让软件自己动起来实现自动化。