Python 利用 PyAutoGUI 快速构建自动化操作脚本
本文介绍如何使用 Python 的 PyAutoGUI 库快速构建自动化操作脚本。通过模拟鼠标点击和键盘输入,解决网页填表、OA 系统操作及批量数据录入等重复性工作。文章详细讲解了坐标获取、ASCII 与汉字输入(结合 pyperclip)、以及 CSV 数据源集成方法,帮助开发者在无需复杂框架的情况下实现高效的 GUI 自动化。
一、背景
大家好,我是安果!
在日常工作中,我们经常面临大量重复性操作的场景,例如:在网页上填写表单、对 Web 版 OA 系统进行常规操作、执行自动化测试,或是为新系统首次录入初始数据等。
这类操作通常具有几个显著特点:数据具有同构性,大多基于已有的结构化数据;操作流程固定且机械,无非是重复的点击与输入动作;数据量庞大,极大消耗操作人员的时间和精力。
那么,能否通过技术手段实现自动化处理呢?
二、自动化的方案
若操作对象为 Web 页面,Python 的 Selenium 库是理想选择。若需操作图形用户界面(GUI),可尝试“按键精灵”等工具是否满足需求。对于新系统的初始数据添加,通过 SQL 导出导入通常是最高效的方式,但可能涉及较为复杂的数据处理逻辑。
我曾多次遇到系统升级活动中,要求手动逐条录入旧数据的情况。
然而,上述方案均存在一定局限性:Selenium 配置与使用较为复杂;按键精灵在功能完整性上有所欠缺;而 SQL 操作则需要具备一定的数据库知识基础。
在此,推荐一个更为简便的解决方案:PyAutoGUI。
PyAutoGUI 的最大优势在于其简单易用,非常适合应急场景,能够迅速构建出可用的自动化脚本。鉴于数据处理任务往往紧迫,我们没有足够的时间去钻研复杂的技术栈来构建完善的脚本,而 PyAutoGUI 正好填补了这一空白。
三、思路和知识点
接下来,我们将探讨基本思路及相关技术要点。
- PyAutoGUI 的核心功能是模拟键盘和鼠标在界面上的操作行为。
- 本文主要演示如何利用其 click 功能来模拟鼠标点击动作。
- 为了精准获取需要点击的目标位置,我们设计了一个用于获取鼠标坐标的小程序。
- ASCII 字符的输入相对简单,而解决汉字输入问题后,整个系统即可基本投入使用。
本文以在 Web 界面批量新增数据记录为例,详细讲解自动化操作的实现过程。该示例仅用于演示,逻辑简单,读者可据此理解并迁移至实际应用场景。

四、操作步骤
4.1 初识 PyAutoGUI
简而言之,PyAutoGUI 是一个用于模拟键盘和鼠标操作的 Python 库。安装时,直接执行以下命令即可:pip install pyautogui。
我们可以编写一个简单的测试程序来验证其功能:
import pyautogui as pag
pag.PAUSE = 1.5
pag.click(63,191)
上述代码导入了库,并设置了每步操作间暂停 1.5 秒(为人工观察或系统响应留出时间),随后在屏幕坐标(x=63, y=191)处执行了一次鼠标点击。
4.2 坐标系
PyAutoGUI 采用的默认坐标系以屏幕左上角为原点 (0,0),x 轴向右数值增大,y 轴向下数值增大。因此,屏幕上的每个像素点都有唯一确定的位置坐标。
由此引申,只要确定了界面上各个按钮的坐标位置,通过程序点击这些坐标点,即可执行相应的界面操作。
当然,这种基于坐标的方法前提是当前界面布局保持不变。大多数应用程序的界面和按钮位置是固定的。若界面存在动态变化,可参考 locateOnScreen() 函数。该函数通过比对提供的图片,在屏幕上寻找像素匹配的区域,从而适应按钮位置变动的需求。
为了获取屏幕坐标系,我们编写了一个简单的程序来实时显示鼠标在屏幕上的坐标位置。读者可自行下载并运行该程序进行练习。
import pyautogui as pag
import os
try:
while True:
os.system('cls')
a = '%4d,%4d'%pag.position()
print(a)
except Exception as e:
print(e)
运行上述程序后,将鼠标移动到各个目标按钮上,屏幕上即可显示对应的坐标数值。

4.3 点击
PyAutoGUI 的点击操作实现非常简洁:
pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button='left', duration=0.0)
其中,x 和 y 代表点击坐标;clicks 指定点击次数;interval 为每次点击之间的间隔时间;button 指定使用哪个鼠标按键(左键、右键或中键);duration 为按下和松开之间的持续时间。
编写如下程序,可实现在任务列表、时间选择器和新建按钮之间的自动跳转操作:
pag.click(63,191)
pag.click(328,191)
pag.click(384,461)
pag.click(374,191)
4.4 输入
关于 ASCII 字符的输入、键盘击键以及热键的使用,分别如下所示:
- 输入 ASCII 字符串示例:typewrite(message='test message.',interval=0.5)
- 按下退出键示例:press('esc')
- 按下组合键中的 Ctrl 键示例:KeyDown('ctrl')
- 松开 Ctrl 键示例:KeyUp('ctrl')
- 组合快捷键示例:hotkey('ctrl','v')。
至于汉字输入,处理方式稍显复杂。
4.5 汉字输入
由于涉及非 ASCII 字符(如汉字),无法直接使用上述 ASCII 输入方案。此时需要导入 pyperclip 库,该库封装了系统剪贴板功能,通过它我们可以实现更灵活的输入操作。
import pyperclip
#以下读入内容,就是把内容存入剪贴板。
pyperclip.copy('需要输入的汉字')
#以下输出内容,就是粘贴。
pag.hotkey('ctrl','v')
具体实现逻辑是:利用 pyperclip 将内容复制到剪贴板,然后使用热键 Ctrl+v 进行粘贴,从而完成非 ASCII 字符的输入。
4.6 集成起来
下面,我们将整个程序逻辑集成在一起进行展示:
import pyautogui as pag
import pyperclip
pag.PAUSE = 1.5
pag.FAILSAFE = True
to = ['测试任务1','测试任务2','测试任务3','测试任务4','测试任务5',\
'测试任务6','测试任务7','测试任务8','测试任务9','测试任务10']
for t in to:
pag.click(63,191)
pyperclip.copy(t)
pag.hotkey('ctrl','v')
pag.click(328,191)
pag.click(384,461)
pag.click(374,191)
上述程序根据 to 列表中的内容,将操作流程分解为点击和粘贴两个动作,从而实现了自动化操作的目的。大部分代码逻辑直观易懂,能与鼠标操作一一对应。唯一可能存在的难点在于数据源的处理,毕竟将所有数据硬编码到程序中并不现实。
五、数据源
面对复杂的现实数据源,最简便的方式是将数据转换为 CSV 文件。许多 Excel 软件支持另存为 CSV 格式,且 CSV 本身基于纯文本,具备可读可写特性,处理起来非常方便。其他数据源如 SQL 数据库或 XML 数据,也可以导出并转换为 CSV 文件。
假设现在已拥有格式为 data.csv 的数据源,我们需要按以下方式进行处理。
to = []
with open('data.csv')as f:
lines = f.readlines()
for line in lines:
to.append(tuple(line.split(',')))
上述代码逻辑简单,主要将 CSV 文件中存储的数据读取并存储到 to 数组中。每行数据被转换为一个元组,调用时如 4.6 部分代码所示,通过 for 循环结合元组下标即可遍历处理。
六、总结
本文利用 PyAutoGUI 库,对各类鼠标点击、键盘输入等机械重复性操作进行了自动化执行演示,可大幅提高工作效率。文中仅使用了 click 功能和 pyperclip 包的 copy 功能,旨在简化编程复杂度,帮助读者在紧张繁琐的操作场景中,快速编写出自动化执行的小脚本。
以上就是 Python 利用 PyAutoGUI 快速构建自动化操作脚本的详细内容,更多关于 Python 用 PyAutoGUI 构建自动化操作脚本的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













