使用 Python 进行 Windows GUI 自动化

Python客栈

共 3992字,需浏览 8分钟

 ·

2023-06-25 20:30

Python客栈设为“星标
第一时间收到最新资讯

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

pyautogui

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

pyautogui 的使用场景

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

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

如何安装 pyautogui

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

pip install pyautogui

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

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

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

import pyautogui

pyautogui.FAILSAFE = True

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

pyautogui.hotkey('win''r')

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

pyautogui.typewrite('notepad', interval=0.25)
pyautogui.press('enter')

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

import time

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

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

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

pyautogui.hotkey('ctrl''s')  # press the Save hotkey combination
time.sleep(1)  # wait for the Save dialog to appear

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

pyautogui.typewrite('hello_world.txt', interval=0.25)
pyautogui.press('enter')  # press the Enter key

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

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:

pip install pywinauto

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

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 库,因为在执行某些操作时,我们可能需要暂停一下。

from pywinauto.application import Application
import time

启动应用程序

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

app = Application().start("notepad.exe")

操作窗口

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

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

app.Notepad.Edit.type_keys("Hello, World!", with_spaces = True)

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

保存和关闭

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

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 应用程序的许多任务,你可以选择合适的工具进行自动化。希望这篇文章和教程能帮你提高工作效率。



往期推荐

1、8个很少用,但却很好用的 Python 库,一起来看看吧

2、“让Python快5倍”最新计划:优化解释器和内存管理

3、90行Python代码让微信地球转起来!

4、如何快速优化Python导包顺序

5、10行Python代码能做出哪些有趣的事情?



点击关注公众号,阅读更多精彩内容

浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报