概要
?文章來源地址http://www.zghlxwxcb.cn/news/detail-501080.html
在今天的文章中,我們將探討如何使用 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)、模擬鼠標操作等。
?文章來源:http://www.zghlxwxcb.cn/news/detail-501080.html
總結(jié)
pywinauto 和 pyautogui 都是強大的 GUI 自動化工具,可以幫助你自動化 Windows 應(yīng)用程序的許多任務(wù),你可以選擇合適的工具進行自動化。希望這篇文章和教程能幫你提高工作效率。
?
歡迎點贊轉(zhuǎn)發(fā)收藏,感謝??
?
?
?
?
到了這里,關(guān)于使用 Python 進行 Windows GUI 自動化的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!