3:GUI⾃动化简单⽰例

在上一篇文章中,我们学会了用UISpy 工具定位界面元素,也彻底搞懂了哪些软件能做自动化、哪些不能。

今天直接进入实战环节 ! 我们用Windows 自带的记事本(Notepad) 作为第一个练手项目,带你写出人生中第一个 GUI 自动化脚本。

代码超级简单,全程不到 10 行,看完就能直接跑通!


一、本篇你能学到什么

  1. 用 Pywinauto 启动应用程序
  2. 用 Pywinauto 连接已打开的窗口
  3. 用 Pywinauto 获取窗口对象
  4. 用 Pywinauto 在输入框输入文本
  5. 用 Pywinauto 关闭窗口

真正做到:启动 → 操作 → 关闭 完整自动化流程。


二、准备工作

  1. 已安装 Python 3.7+
  2. 已安装 pywinauto 0.6.9
  3. 电脑是 Windows 系统(自带记事本)

三、完整自动化代码(可直接复制运行)

python 复制代码
# 导入时间模块
import time

# 从 pywinauto 导入核心类 Application
from pywinauto import Application

# 1. 启动记事本(使用uia模式,适配现代应用)
Application(backend="uia").start("notepad.exe")
time.sleep(3)  # 等待程序启动完成

# 2. 连接已经打开的记事本窗口(模糊匹配标题:包含"记事本"即可)
app = Application(backend="uia").connect(title_re=".*记事本")

# 3. 获取主窗口
notepad = app.window(title_re=".*记事本")

# 4. 在编辑框中输入文本
notepad.Edit.type_keys("Hello, Pywinauto!我是自动化脚本!")

# 5. 关闭记事本
notepad.close()

运行效果: 自动打开记事本 → 自动输入文字 → 自动关闭记事本 全程不需要你动鼠标键盘!


四、逐行代码讲解(超易懂)

1. 启动应用程序

复制代码
Application(backend="uia").start("notepad.exe")
  • backend="uia":使用现代 UI 模式,最稳定
  • start("notepad.exe"):启动记事本程序
  • 这一行 = 你双击打开记事本

2. 等待程序加载

复制代码
time.sleep(3)

给系统 3 秒时间启动记事本,避免脚本运行太快导致找不到窗口。

3. 连接已打开的窗口

复制代码
app = Application(backend="uia").connect(title_re=".*记事本")
  • connect():连接一个已经运行的程序
  • title_re=".*记事本":模糊匹配窗口标题,只要标题包含 "记事本" 就能找到

4. 获取窗口对象

复制代码
notepad = app.window(title_re=".*记事本")

拿到记事本主窗口,后续所有操作都基于这个窗口。

5. 输入文本

复制代码
notepad.Edit.type_keys("Hello, Pywinauto!")
  • Edit:记事本的输入框控件名(pywinauto 内置识别)
  • type_keys():模拟键盘输入文字

6. 关闭窗口

复制代码
notepad.close()

自动关闭记事本,完成整个自动化流程。


五、这个示例为什么适合新手?

  1. 不需要安装任何软件(记事本系统自带)
  2. 不需要 UISpy 工具查控件(Edit 是通用控件)
  3. 代码短、逻辑清晰
  4. 成功率 100%
  5. 能立刻看到自动化效果,成就感超强

六、你可以自己尝试的小练习

把输入内容改成你想输入的文字:

复制代码
notepad.Edit.type_keys("我正在学习Pywinauto自动化!")

再试试多行输入:

复制代码
notepad.Edit.type_keys("第一行内容{ENTER}第二行内容{ENTER}第三行来啦!")

{ENTER} = 回车键


七、下一篇内容预告

下一篇我们将学习:

  • 打开计算器自动计算
  • 使用UISpy 工具精准定位控件
  • 点击按钮、获取结果、模拟更多真实操作
  • 写出更专业的自动化脚本

总结(本篇核心)

  1. 启动应用start(程序路径)
  2. 连接应用connect(title_re=".*标题")
  3. 获取窗口window()
  4. 操作控件控件.type_keys(内容)
  5. 关闭窗口close()
相关推荐
Doker 多克13 小时前
Spring AI Alibaba—快速构建ReactAgent
java·开发语言·前端·ai编程
张忠琳13 小时前
【Go 1.26.4】Golang Slice 深度解析
开发语言·后端·golang
码云骑士13 小时前
09-Python模块导入机制-sys.path与循环导入的死锁式排查
开发语言·python
星恒随风13 小时前
C++ 模板初阶:从泛型编程、函数模板到类模板,一篇打通基础概念
开发语言·c++·笔记·学习
郝学胜-神的一滴13 小时前
Qt 高级开发 031:QListWidget图标布局实战
开发语言·c++·qt·程序人生·软件构建·用户界面
caimouse13 小时前
Reactos 第 8 章 结构化异常处理 — 8.4 软异常
服务器·开发语言·windows
艾莉丝努力练剑13 小时前
【Qt】界面优化:绘图API
linux·运维·开发语言·网络·qt·tcp/ip·udp
牛油果子哥q13 小时前
队列(Queue)深度精讲,先进先出原理、顺序/链式/循环队列、STL queue底层、栈队列互模拟与面试考点全解
开发语言·c++·面试
聆风吟º13 小时前
【Python编程日志】Python基础数据类型完整梳理
开发语言·python·数据类型
keykey6.14 小时前
逻辑回归:从回归到分类
开发语言·人工智能·机器学习