前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >使用 Python 进行 Windows GUI 自动化

使用 Python 进行 Windows GUI 自动化

作者头像
somenzz
发布于 2023-08-22 06:33:24
发布于 2023-08-22 06:33:24
1.8K00
代码可运行
举报
文章被收录于专栏:Python七号Python七号
运行总次数:0
代码可运行

在今天的文章中,我们将探讨如何使用 Python 进行 Windows GUI 自动化。GUI 自动化可以帮助我们自动执行许多与操作系统交互的任务,比如移动鼠标、点击按钮、输入文本、移动窗口等。Python 提供了两个强大的库:pyautogui 和 pywinauto,使得 GUI 自动化变得简单。接下来我们详细介绍。

pyautogui

pyautogui 是一个纯 Python 的 GUI 自动化库,它可以模拟键盘输入、鼠标点击和移动、在屏幕上查找图像等操作。它对 Windows、macOS、和 Linux 都有良好的支持,可以帮助我们编写跨平台的自动化脚本。

pyautogui 的使用场景

pyautogui 的使用场景非常广泛。以下是一些常见的例子:

  1. ** 测试 **:自动化脚本可以帮助我们自动执行一些复杂的测试用例,比如 UI 测试、功能测试等。
  2. ** 数据录入 **:如果我们需要在多个表单或应用程序中输入相同的数据,自动化脚本可以帮助我们节省大量的时间和精力。
  3. ** 批量操作 **:如果我们需要对大量的文件或数据进行相同的操作,自动化脚本也可以派上用场。

如何安装 pyautogui

在开始使用 pyautogui 之前,我们需要先在我们的 Python 环境中安装它。在命令行中输入以下命令即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install pyautogui

pyautogui 打开记事本,输入文本保存

接下来,我们通过一个简单的例子来展示如何使用 pyautogui。在这个例子中,我们将使用 pyautogui 来自动打开一个记事本,输入一些文字,然后保存并关闭它。

首先,我们导入 pyautogui 库,并设置失败安全特性,当我们将鼠标移动到屏幕的左上角时,自动化会立即停止:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pyautogui

pyautogui.FAILSAFE = True

然后,我们使用 pyautoguihotkey 函数来模拟按下 Win+R 组合键,打开运行对话框:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pyautogui.hotkey('win', 'r')

接着,我们使用 typewrite 函数来输入 "notepad",并按下回车键:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pyautogui.typewrite('notepad', interval=0.25)
pyautogui.press('enter')

然后,我们等待一下,让记事本完全打开,然后再输入一些文字:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import time

time.sleep(2)  # wait for Notepad to open
pyautogui.typewrite('Hello, world!', interval=0.25)

typewrite 函数可以模拟键盘输入,interval 参数可以设置每个字符之间的间隔,以模拟人类的打字速度。

接下来,我们用 hotkey 函数来模拟按下 Ctrl+S 组合键,保存这个文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pyautogui.hotkey('ctrl', 's')  # press the Save hotkey combination
time.sleep(1)  # wait for the Save dialog to appear

然后我们输入文件名,并按下回车键保存文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pyautogui.typewrite('hello_world.txt', interval=0.25)
pyautogui.press('enter')  # press the Enter key

最后,我们用 hotkey 函数来模拟按下 Alt+F4 组合键,关闭记事本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pyautogui.hotkey('alt', 'f4')  # close Notepad

以上就是用 pyautogui 编写的一个简单的自动化脚本。通过这个脚本,我们可以看到,pyautogui 提供了一套非常直观和易用的接口,让我们可以轻松地编写出复杂的自动化脚本。

pywinauto

pywinauto 的主要用途是自动化 Windows GUI 应用程序的测试和自动化。

pywinauto 的使用场景

  • 回归测试:定期运行相同的测试,确保软件在进行更改或更新后仍然可以正常工作。
  • 质量保证:确保软件的新版本或功能与预期的用户体验一致。
  • 持续集成 / 持续部署 (CI/CD) 流程:在自动化的构建和部署过程中,进行软件测试
  • 任务自动化:自动执行一些重复性的 GUI 操作,如文件管理,软件安装等。

用 pywinauto 来自动化 Windows 计算器

下面是一个简单的 pywinauto 教程,我们将演示如何用 pywinauto 来自动化 Windows 计算器的操作。

首先,你需要确保你的环境已经安装了 Python 和 pywinauto。你可以使用 pip 来安装 pywinauto:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install pywinauto

然后,我们可以编写一个简单的脚本来启动计算器应用并执行一些操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pywinauto.application import Application

# 启动 Windows 计算器
app = Application().start("calc.exe")

# 选择计算器窗口
dlg = app.window(title=' 计算器 ')

# 在计算器中输入 2+2
dlg.type_keys('2+2=')

# 打印结果
print(" 结果是:", dlg.Static2.window_text())

这段代码首先启动了 Windows 计算器,然后在计算器中执行了 2+2 的操作,并打印出结果。

** 请注意:这个示例假设你的计算器应用具有类似于 Windows 10 计算器的布局。不同的 Windows 版本可能需要适当调整代码。**

用 pywinauto 来自动化 Windows 记事本

导入模块

在 Python 脚本中,我们需要导入 pywinauto 库。同时,我们还会导入 time 库,因为在执行某些操作时,我们可能需要暂停一下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pywinauto.application import Application
import time
启动应用程序

使用 pywinauto 的 Application 对象,我们可以启动和控制应用程序。例如,如果我们要打开记事本,我们可以这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app = Application().start("notepad.exe")
操作窗口

在打开应用程序后,我们通常需要与其窗口进行交互。我们可以使用 app 对象的 window_ 方法来获取窗口。然后,我们可以调用窗口的方法来执行各种操作,如点击按钮或输入文本。

例如,我们可以在记事本中输入一些文本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.Notepad.Edit.type_keys("Hello, World!", with_spaces = True)

type_keys 方法会模拟键盘按键。with_spaces = True 参数表示我们希望在每次按键之间添加短暂的延迟,以模拟人类的打字速度。

保存和关闭

最后,我们可以模拟点击菜单选项来保存我们的文件,然后关闭记事本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.Notepad.menu_select("File -> Save As")
app.SaveAs.Edit.set_edit_text("example.txt")
app.SaveAs.Save.click()
time.sleep(1)
app.Notepad.menu_select("File -> Exit")

在这个例子中,menu_select 方法用于模拟点击菜单选项,set_edit_text 方法用于在文本框中输入文本,click 方法用于点击按钮。

** 请注意:这个示例假设你的记事本的菜单是英文,如果是中文,则需要调整代码为中文。**

以上就是一个基本的例子,展示了如何使用 Python 和 pywinauto 进行 Windows GUI 自动化。当然,pywinauto 还有更多的功能等待您去探索,包括处理复杂的窗口结构、模拟鼠标操作等。

最后的话

pywinauto 和 pyautogui 都是强大的 GUI 自动化工具,可以帮助你自动化 Windows 应用程序的许多任务,你可以选择合适的工具进行自动化。希望这篇文章和教程能帮你提高工作效率,有问题也可以添加微信[somenzz-enjoy ]交流学习。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python七号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
长文:技术管理者的那些事
管理规划对于技术管理者来说,非常之重要。在日常工作中,技术管理者往往需面对大量纷繁复杂的事情,特别是有很多救火类的工作。但在忙乱之余,是不是有一个“全盘规划”的指引,清不清楚把团队带往何方,这才是不同leader领导水平的差距所在。出现问题就解决问题,是一种“问题驱动型思维”。而今天我们所谈论的"管理规划",就是要回答"把团队带往何方"的这个方向性问题。通过理清未来的发展来理顺当前问题的带团队思路,称之为规划驱动型思维
用户5548425
2019/09/04
6650
长文:技术管理者的那些事
No.185# 技术管理框架知识点随记
陆续参加了公司组织的两场关于技术管理的培训,时间一长也快忘的七七八八了。本文以刘建国《执行技术人管理之路》为基础框架,将知识点做了整理,在需要的时候翻翻。本文主要内容有:
瓜农老梁
2023/09/02
4740
No.185# 技术管理框架知识点随记
敏捷绩效管理三剑客:OKR 、KPI、CFR
从第一次工业革命开始,人类经历了蒸汽时代、电气时代、信息时代,并正在迎接智能时代的到来。在蒸汽时代和电气时代,推动经济社会发展的核心资源是不可再生的物质能源和资本;而到了信息时代,知识和信息成为了企业的核心战略资源,员工必须具备较高知识和技能水平,才能较好地完成诸如软硬件研发等各种信息处理工作;进入智能时代后,创造力逐渐成为高效组织的一个必要条件,低技术含量的企业正逐渐被高创造性企业取代。
腾讯云 CODING
2021/06/15
1.3K0
敏捷绩效管理三剑客:OKR 、KPI、CFR
突破技术管理,IT人中年危机变契机
作为一个老技术人,今天不聊技术,就聊点技术人员职业发展的事情:对技术管理岗位的认知,比如技术总监。
纯洁的微笑
2018/10/24
7000
突破技术管理,IT人中年危机变契机
说书解书:与时俱进的《技术管理之巅》——作者专访
互联网行业奇缺CTO是现状,很多人正在到处物色CTO,那么到底如何成为一名合格的CTO呢?技术管理到底应该怎么做呢?《技术管理之巅》不仅解答了这些问题,还给出了很多实践方法与案例。下面且听作者讲讲这本书的那些事儿。
博文视点Broadview
2020/06/11
8580
【CSDN深度专访】黄哲铿:从团队管理、绩效考核等全方位解读高效互联网技术团队
如何实施看板、敏捷、倾听等团队管理方法?管理者如何评选绩效考核以及权力在管理层面的正负面作用?员工的职业发展的进阶之路又有哪些?技术管理者在招聘过程中应看重哪些方面?且听1号店技术总监黄哲铿一一道来。
博文视点Broadview
2020/06/11
1.1K0
技术走向管理一些深度思考
性格特质和自我管理 1,管理需具备的性格特质 欣赏他人:以一种不以自我为中心的合作的方式和他人相处,能平静和客观地接受不同的人,放下自己的性格、喜好,去欣赏不同类型的人。不是通过个人友谊或者熟悉程度,而是通过某个人的性格特质和其具体的客观表现去欣赏他的价值。管理最重要的是要在乎他人,要完成从关注自己想法到关注别人想法的转变。 可信的人格:公正、诚实、守信、与人为善、律己宽人等。优秀的管理要为人表率、以德服人,本身具有魅力,能够影响别人,这就要求管理人员要有优秀、可信赖的人格。只有优秀人格的驱动下,管理人员才
用户1410343
2018/03/27
7810
聊一聊团队管理:如何搭建自己的管理体系!
现实中没有找到一个现成的体系将管理经验很好地归纳到一起,于是采用一个自底向上的过程,先是将所有知识打碎,然后重新归类汇总。
测试开发技术
2021/08/20
2.7K0
Google、华为、今日头条都在用的绩效管理OKR是什么? | 推荐收藏
今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博客中国丨趣头条丨腾讯云·云+社区
数据猿
2019/08/15
2.1K0
Google、华为、今日头条都在用的绩效管理OKR是什么? | 推荐收藏
转型架构师之路——郑天民
架构师是一个综合性的角色,需要熟练掌握架构设计方法和开发技术,同时具备良好的组织管理能力。在第2篇《深入剖析架构师角色》中我们分析了架构师的主要职责和所开展的活动,无论这些活动是偏向技术还是偏向管理,架构师都处于一个特定的环境中,活动的开展也不是架构师一个人的战斗,需要与他人进行协作和交互。因此,除了各种专业的业务技能之外,架构师还需要掌握一些额外的技能。
Java天坑
2018/10/10
7510
转型架构师之路——郑天民
第八章 软件项目团队管理
8.1 软件项目团队管理概述 8.2 项目组织的规划 8.3 团队人员获取 8.4 团队建设和日常管理 8.5 沟通管理 8.6 软件专业人员的非技术素养
全栈程序员站长
2022/07/01
1.2K0
第八章 软件项目团队管理
【项目管理】 项目管理术语总结 (PMP培训笔记)
项目管理定义 : 将 知识, 技能, 工具 与 技术 应用与项目活动, 以满足项目的要求;
韩曙亮
2023/03/27
1K0
《C++职场中,如何塑造卓越的技术领导力》
在当今竞争激烈的 C++职场领域,技术领导力不仅是个人职业发展的关键,更是推动团队和项目成功的核心力量。那么,如何在 C++职场中提高自己的技术领导力呢?以下是一些关键要点。
程序员阿伟
2024/12/09
590
项目管理实践篇(二):总结项目经历
4 年时间很长,经历的人和事数不过来;4 年时间太短,想打造自己的专业能力还要假以时日。我一直在思考,程序员到底在互联网这条路上能够走多远呢?
后台技术汇
2022/05/30
4820
项目管理实践篇(二):总结项目经历
要想组建敏捷团队,这些方法不可少
我之前有个客户,他的经历其实还挺有意思的:这个客户一直在想方设法地提高自己的项目组的效率,但做了很多尝试,比如绩效激励或内卷考核等,不能说一点用都没有,就是效果也不是很显著。在聊天的时候,其实会发现他所在的项目组有一个很大的弊端:组内的成员是不稳定的,也就是项目组成员会一定时间进行调换。像这样的问题在团队中其实不少,所以真正要组建起一个敏捷团队,还是得注意如下方法:
敏捷开发
2022/07/28
6490
要想组建敏捷团队,这些方法不可少
软件测试/测试管理|项目启动:成功开启新征程的关键一步
在项目管理中,项目启动是决定整个项目走向的关键一步。项目 kickoff 会议是项目启动的首要活动,它为整个团队提供了一个机会,共同理解项目的目标、范围和关键细节。作为测试管理人员,您的关注点在项目 kickoff 会议中尤为重要,因为测试团队的准备工作对项目的成功至关重要。
霍格沃兹测试开发Muller老师
2024/02/01
1260
仰望天空,脚踏实地 —— CODING OKR 全新上线
关键绩效与目标脱节,在执行中员工只埋头于自己的关键绩效,而忽略了目标本身,造成员工目光止于眼前,工作浮于表面。
腾讯云 CODING
2021/05/08
5160
仰望天空,脚踏实地 —— CODING OKR 全新上线
软件测试/测试管理|构建成功的团队成长规划
在测试管理领域,构建一个成功的团队成长规划是确保团队长期稳定发展的关键一步。该规划不仅需要关注整体能力建设,还要明确的发展里程碑,以确保团队在技术、协作和职业发展方面保持竞争力。以下是关于如何制定团队成长规划的建议:
霍格沃兹测试开发Muller老师
2024/02/01
2530
阶段性能力思考
随着工作经历不断丰富,也迈过了数个阶段性里程碑。这里是对去年个人能力学习的总结,同时也是思考下阶段做事情的方向。
落影
2023/01/11
3250
向上管理的两个职场案例
之前分享过很多职场成长的内容,其中也聊了很多关于向上管理工作汇报的个人经验,最近好几个同学在公众号后台留言咨询,有没有比较实际的向上管理案例可以分享,想参照学习一下。
老_张
2023/10/27
5130
向上管理的两个职场案例
推荐阅读
相关推荐
长文:技术管理者的那些事
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • pyautogui
    • pyautogui 的使用场景
    • 如何安装 pyautogui?
    • 用 pyautogui 打开记事本,输入文本保存
  • pywinauto
    • pywinauto 的使用场景
    • 用 pywinauto 来自动化 Windows 计算器
    • 用 pywinauto 来自动化 Windows 记事本
      • 导入模块
      • 启动应用程序
      • 操作窗口
      • 保存和关闭
  • 最后的话
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档