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()
相关推荐
坚定学代码8 小时前
如何在c++中使用MySQL
开发语言·c++·mysql
小牛蛋8 小时前
vcpkg 管理 PCL + VTK + Qt 开发三维点云可视化软件
开发语言·qt
zandy10118 小时前
2026 BI平台安全治理体系构建:从权限模型到零信任架构
java·开发语言
纽扣6678 小时前
【C++通关之路】C++ 继承深度全景指南:从语法陷阱到内存底层的终极复习
开发语言·c++
wjs20248 小时前
Eclipse 快捷键
开发语言
楼田莉子8 小时前
C++17特性:强制省略拷贝优化/折叠表达式/非类型模板参数/嵌套命名空间
开发语言·c++
froginwe118 小时前
JavaScript JSON
开发语言
xifangge20258 小时前
Steam/Epic 游戏启动报错 0xc000007b / msvcp140.dll 缺失?VC++ 运行库底层修复指南
开发语言·c++·游戏
imuliuliang8 小时前
Laravel3.x:PHP框架进化史上的里程碑
开发语言·php