使用 Python 进行 Windows GUI 自动化
在今天的文章中,我们将探讨如何使用 Python 进行 Windows GUI 自动化。GUI 自动化可以帮助我们自动执行许多与操作系统交互的任务,比如移动鼠标、点击按钮、输入文本、移动窗口等。Python 提供了两个强大的库:pyautogui 和 pywinauto,使得 GUI 自动化变得简单。接下来我们详细介绍。
pyautogui
pyautogui
是一个纯 Python 的 GUI 自动化库,它可以模拟键盘输入、鼠标点击和移动、在屏幕上查找图像等操作。它对 Windows、macOS、和 Linux 都有良好的支持,可以帮助我们编写跨平台的自动化脚本。
pyautogui
的使用场景
pyautogui
的使用场景非常广泛。以下是一些常见的例子:
** 测试 **:自动化脚本可以帮助我们自动执行一些复杂的测试用例,比如 UI 测试、功能测试等。 ** 数据录入 **:如果我们需要在多个表单或应用程序中输入相同的数据,自动化脚本可以帮助我们节省大量的时间和精力。 ** 批量操作 **:如果我们需要对大量的文件或数据进行相同的操作,自动化脚本也可以派上用场。
如何安装 pyautogui
?
在开始使用 pyautogui
之前,我们需要先在我们的 Python 环境中安装它。在命令行中输入以下命令即可:
pip install pyautogui
用 pyautogui
打开记事本,输入文本保存
接下来,我们通过一个简单的例子来展示如何使用 pyautogui
。在这个例子中,我们将使用 pyautogui
来自动打开一个记事本,输入一些文字,然后保存并关闭它。
首先,我们导入 pyautogui
库,并设置失败安全特性,当我们将鼠标移动到屏幕的左上角时,自动化会立即停止:
import pyautogui
pyautogui.FAILSAFE = True
然后,我们使用 pyautogui
的 hotkey
函数来模拟按下 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 应用程序的许多任务,你可以选择合适的工具进行自动化。希望这篇文章和教程能帮你提高工作效率。
点击关注公众号,阅读更多精彩内容