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()
相关推荐
北冥you鱼19 分钟前
Go 语言读取链上数据:从基础到实战
开发语言·后端·golang
nianniannnn20 分钟前
c++复习自存--继承
开发语言·c++
叩码以求索2 小时前
经典算法实例分析:写字符串需要的行数
开发语言·javascript·ecmascript
我是唐青枫2 小时前
Kotlin 运算符重载详解:为什么 a += b 有时改对象,有时换对象?
开发语言·kotlin
2zcode2 小时前
基于MATLAB图像处理的饮料瓶识别与价格显示系统设计与实现
开发语言·图像处理·matlab
骑士雄师2 小时前
大模型:临时会话
开发语言·python
努力中的编程者3 小时前
STL-vector的模拟实现
开发语言·c++·算法·stl·vector
risc1234563 小时前
Roaring Bitmap
java·开发语言·mybatis
薛定猫AI3 小时前
【深度解析】GLM-5.2 与 Z-Code:AI 编程智能体的原理拆解与 Python 调用实战
开发语言·人工智能·python
没文化的阿浩3 小时前
【C++】详解继承机制
开发语言·c++