使用 Python 進行 Windows GUI 自動化

在今天的文章中,我們將探討如何使用 Python 進行 Windows GUI 自動化。GUI 自動化可以幫助我們自動執(zhí)行許多與操作系統(tǒng)交互的任務(wù),比如移動鼠標、點擊按鈕、輸入文本、移動窗口等。Python 提供了兩個強大的庫:pyautogui 和 pywinauto,使得 GUI 自動化變得簡單。接下來我們詳細介紹。
pyautogui
pyautogui 是一個純 Python 的 GUI 自動化庫,它可以模擬鍵盤輸入、鼠標點擊和移動、在屏幕上查找圖像等操作。它對 Windows、macOS、和 Linux 都有良好的支持,可以幫助我們編寫跨平臺的自動化腳本。
pyautogui 的使用場景
pyautogui 的使用場景非常廣泛。以下是一些常見的例子:
** 測試 **:自動化腳本可以幫助我們自動執(zhí)行一些復雜的測試用例,比如 UI 測試、功能測試等。 ** 數(shù)據(jù)錄入 **:如果我們需要在多個表單或應(yīng)用程序中輸入相同的數(shù)據(jù),自動化腳本可以幫助我們節(jié)省大量的時間和精力。 ** 批量操作 **:如果我們需要對大量的文件或數(shù)據(jù)進行相同的操作,自動化腳本也可以派上用場。
如何安裝 pyautogui?
在開始使用 pyautogui 之前,我們需要先在我們的 Python 環(huán)境中安裝它。在命令行中輸入以下命令即可:
pip install pyautogui
用 pyautogui 打開記事本,輸入文本保存
接下來,我們通過一個簡單的例子來展示如何使用 pyautogui。在這個例子中,我們將使用 pyautogui 來自動打開一個記事本,輸入一些文字,然后保存并關(guān)閉它。
首先,我們導入 pyautogui 庫,并設(shè)置失敗安全特性,當我們將鼠標移動到屏幕的左上角時,自動化會立即停止:
import pyautogui
pyautogui.FAILSAFE = True
然后,我們使用 pyautogui 的 hotkey 函數(shù)來模擬按下 Win+R 組合鍵,打開運行對話框:
pyautogui.hotkey('win', 'r')
接著,我們使用 typewrite 函數(shù)來輸入 "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 函數(shù)可以模擬鍵盤輸入,interval 參數(shù)可以設(shè)置每個字符之間的間隔,以模擬人類的打字速度。
接下來,我們用 hotkey 函數(shù)來模擬按下 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 函數(shù)來模擬按下 Alt+F4 組合鍵,關(guān)閉記事本:
pyautogui.hotkey('alt', 'f4') # close Notepad
以上就是用 pyautogui 編寫的一個簡單的自動化腳本。通過這個腳本,我們可以看到,pyautogui 提供了一套非常直觀和易用的接口,讓我們可以輕松地編寫出復雜的自動化腳本。
pywinauto
pywinauto 的主要用途是自動化 Windows GUI 應(yīng)用程序的測試和自動化。
pywinauto 的使用場景
回歸測試:定期運行相同的測試,確保軟件在進行更改或更新后仍然可以正常工作。 質(zhì)量保證:確保軟件的新版本或功能與預(yù)期的用戶體驗一致。 持續(xù)集成 / 持續(xù)部署 (CI/CD) 流程:在自動化的構(gòu)建和部署過程中,進行軟件測試。 任務(wù)自動化:自動執(zhí)行一些重復性的 GUI 操作,如文件管理,軟件安裝等。
用 pywinauto 來自動化 Windows 計算器
下面是一個簡單的 pywinauto 教程,我們將演示如何用 pywinauto 來自動化 Windows 計算器的操作。
首先,你需要確保你的環(huán)境已經(jīng)安裝了 Python 和 pywinauto。你可以使用 pip 來安裝 pywinauto:
pip install pywinauto
然后,我們可以編寫一個簡單的腳本來啟動計算器應(yīng)用并執(zhí)行一些操作:
from pywinauto.application import Application
# 啟動 Windows 計算器
app = Application().start("calc.exe")
# 選擇計算器窗口
dlg = app.window(title=' 計算器 ')
# 在計算器中輸入 2+2
dlg.type_keys('2+2=')
# 打印結(jié)果
print(" 結(jié)果是:", dlg.Static2.window_text())
這段代碼首先啟動了 Windows 計算器,然后在計算器中執(zhí)行了 2+2 的操作,并打印出結(jié)果。
** 請注意:這個示例假設(shè)你的計算器應(yīng)用具有類似于 Windows 10 計算器的布局。不同的 Windows 版本可能需要適當調(diào)整代碼。**
用 pywinauto 來自動化 Windows 記事本
導入模塊
在 Python 腳本中,我們需要導入 pywinauto 庫。同時,我們還會導入 time 庫,因為在執(zhí)行某些操作時,我們可能需要暫停一下。
from pywinauto.application import Application
import time
啟動應(yīng)用程序
使用 pywinauto 的 Application 對象,我們可以啟動和控制應(yīng)用程序。例如,如果我們要打開記事本,我們可以這樣做:
app = Application().start("notepad.exe")
操作窗口
在打開應(yīng)用程序后,我們通常需要與其窗口進行交互。我們可以使用 app 對象的 window_ 方法來獲取窗口。然后,我們可以調(diào)用窗口的方法來執(zhí)行各種操作,如點擊按鈕或輸入文本。
例如,我們可以在記事本中輸入一些文本:
app.Notepad.Edit.type_keys("Hello, World!", with_spaces = True)
type_keys 方法會模擬鍵盤按鍵。with_spaces = True 參數(shù)表示我們希望在每次按鍵之間添加短暫的延遲,以模擬人類的打字速度。
保存和關(guān)閉
最后,我們可以模擬點擊菜單選項來保存我們的文件,然后關(guān)閉記事本:
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 方法用于點擊按鈕。
** 請注意:這個示例假設(shè)你的記事本的菜單是英文,如果是中文,則需要調(diào)整代碼為中文。**
以上就是一個基本的例子,展示了如何使用 Python 和 pywinauto 進行 Windows GUI 自動化。當然,pywinauto 還有更多的功能等待您去探索,包括處理復雜的窗口結(jié)構(gòu)、模擬鼠標操作等。
最后的話
pywinauto 和 pyautogui 都是強大的 GUI 自動化工具,可以幫助你自動化 Windows 應(yīng)用程序的許多任務(wù),你可以選擇合適的工具進行自動化。希望這篇文章和教程能幫你提高工作效率。


1、8個很少用,但卻很好用的 Python 庫,一起來看看吧
點擊關(guān)注公眾號,閱讀更多精彩內(nèi)容

