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()
相关推荐
工具派2 分钟前
Word文档太大怎么拆分?段落结构与两种拆法的边界实测
开发语言·c#·word
wjcroom18 分钟前
实现老型号HP打印机手机无线打印的一些步骤和方法
开发语言·智能手机·php
潜龙952720 分钟前
需求文档一键变测试用例:手工用例智能生成平台
开发语言·c#
sunburn-24 分钟前
Java 排序算法详细教学:从冒泡排序到快速排序
java·开发语言·数据结构·ide·算法
鹤卿12327 分钟前
「iOS」GCD
开发语言·ios·objective-c
我是小白呀28 分钟前
编排还是事件协作?用 AcmeFlow 讲清企业 Workflow 的控制权
java·开发语言
ACP广源盛1392462567332 分钟前
接口适配方案选型|GSV6125@ACP HDMI2.0 转 Type‑C/DP1.4 桥接芯片工程评估
大数据·c语言·开发语言·硬件架构·硬件工程·国产芯片
小羊没烦恼!1 小时前
【译】利用Asp.net MVC处理文件的上传下载
开发语言·缓存·c#·word·powerpoint·.net
时间的拾荒人1 小时前
Qt 信号与槽机制详解(二):连接方式详解与面试指南
开发语言·qt·面试
霸道流氓气质1 小时前
LangGraph式图编排引擎Java实现:状态机模型、Checkpoint恢复与生产级落地实战
java·开发语言·数据库