最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?Pywinauto輕松實現(xiàn)Windows桌面自動化詳解

 更新時間:2025年05月18日 09:41:44   作者:朱公子的Note  
pywinauto這個Python庫可以讓你像魔法師一樣操控Windows?GUI,輕松模擬鼠標鍵盤操作,自動化Notepad,Excel甚至企業(yè)級軟件,下面小編就來和大家詳細介紹一下它的使用吧

你是否厭倦了每天重復(fù)點擊軟件界面的枯燥操作?是否希望能像自動化網(wǎng)頁那樣,輕松控制桌面程序?在自動化測試逐漸擴展到客戶端桌面的今天,你還不知道 pywinauto,就真的落后了!

手動測試Windows桌面應(yīng)用,重復(fù)點擊、輸入,累到懷疑人生?pywinauto來救場!這個Python庫讓你像“魔法師”一樣操控Windows GUI,輕松模擬鼠標鍵盤操作,自動化Notepad、Excel甚至企業(yè)級軟件。“pywinauto讓Windows自動化像寫腳本一樣簡單!”數(shù)據(jù)顯示,pywinauto可將測試時間縮短80%,覆蓋率提升90%。無論你是測試新手還是RPA開發(fā)者,本文從零開始,帶你通過環(huán)境搭建、控件定位到實戰(zhàn)案例,玩轉(zhuǎn)pywinauto,自動化技能一飛沖天!

pywinauto是什么?如何用它實現(xiàn)Windows自動化測試?從環(huán)境搭建到測試用例設(shè)計,具體步驟有哪些?如何應(yīng)對復(fù)雜場景?

觀點與案例結(jié)合

pywinauto通過Python API連接Windows應(yīng)用,定位控件并模擬用戶操作,支持Win32和UIA后端,適合GUI測試、數(shù)據(jù)采集和自動化任務(wù)。以下是實現(xiàn)自動化測試的五大步驟,附實戰(zhàn)案例與代碼。

pywinauto是一個用于自動化Python模塊,適合Windows系統(tǒng)的軟件(GUI),可以通過Pywinauto遍歷窗口(對話框)和窗口里的控件,也可以控制鼠標和鍵盤輸入,所以它能做的事情比之前介紹的pysimplegui更多

官網(wǎng)文檔:https://pywinauto.readthedocs.io/en/latest/

1. 環(huán)境搭建:快速入門pywinauto

場景:安裝Python、pywinauto和依賴,準備測試環(huán)境。

步驟:

安裝Python(3.6+):從Python官網(wǎng)下載,確保pip可用。

安裝pywinauto:運行pip install pywinauto。

(可選)安裝調(diào)試工具:如pywin32(pip install pywin32)和Spy++(Visual Studio自帶)或Inspect.exe(Windows SDK)。

驗證安裝:運行python -c "import pywinauto",無報錯即成功。

案例:某測試團隊安裝pywinauto,5分鐘完成環(huán)境搭建,開始測試企業(yè)WPF應(yīng)用。 代碼(驗證安裝):

import pywinauto
print("pywinauto installed successfully!")

實踐:安裝pywinauto,運行上述代碼驗證環(huán)境。

2. Application:啟動與連接應(yīng)用

場景:用Application啟動新應(yīng)用或連接已有進程。

核心:

Application(backend="win32"):適合傳統(tǒng)Win32應(yīng)用(如Notepad)。

Application(backend="uia"):適合現(xiàn)代WPF/WinForms應(yīng)用(如Excel)。

方法:start()啟動新進程,connect()連接運行中應(yīng)用。

代碼(啟動Notepad與連接Excel):

from pywinauto import Application
 
# 啟動Notepad
app_notepad = Application(backend="win32").start("notepad.exe")
 
# 連接已運行的Excel
app_excel = Application(backend="uia").connect(title_re=".*Excel.*")

說明:start()直接運行可執(zhí)行文件,connect()通過窗口標題、正則表達式或進程ID定位。

案例:某企業(yè)用Application連接ERP軟件,自動錄入數(shù)據(jù),效率提升70%。

實踐:啟動Notepad,嘗試用connect(title="Untitled - Notepad")連接。

3. WindowSpecification:精準定位窗口與控件

場景:用WindowSpecification定位窗口和元素控件(如按鈕、文本框)。

核心:

WindowSpecification通過窗口標題或控件屬性定位,支持鏈式調(diào)用。

用print_control_identifiers()查看控件樹,獲取控件名稱、ID或類型。

方法:child_window()定位子控件,wrapper_object()獲取可操作對象。

代碼(定位Notepad編輯框):

from pywinauto import Application
 
# 啟動Notepad
app = Application(backend="win32").start("notepad.exe")
 
# 獲取窗口
dlg = app["Untitled - Notepad"]
 
# 打印控件樹
dlg.print_control_identifiers()
 
# 定位編輯框
edit = dlg.child_window(control_type="Edit").wrapper_object()

說明:print_control_identifiers()輸出控件層次,control_type基于UIA(如Edit、Button)。

案例:某測試團隊用WindowSpecification定位WPF應(yīng)用的“提交”按鈕,自動化點擊,測試覆蓋率達95%。

實踐:運行上述代碼,查看Notepad控件樹,定位編輯框。

4. 鍵盤與鼠標操作:模擬用戶行為

場景:模擬鍵盤輸入、快捷鍵和鼠標點擊。

核心:

鍵盤:type_keys()輸入文本或快捷鍵(如^s表示Ctrl+S)。

鼠標:click()、double_click()、right_click()模擬鼠標操作。

支持pywinauto.keyboard和pywinauto.mouse模塊精細控制。

代碼(Notepad輸入與保存):

from pywinauto import Application
 
# 啟動Notepad
app = Application(backend="win32").start("notepad.exe")
dlg = app["Untitled - Notepad"]
edit = dlg.child_window(control_type="Edit").wrapper_object()
 
# 鍵盤輸入
edit.type_keys("Hello, pywinauto!{ENTER}Let's automate!")
 
# 鼠標點擊“文件”菜單
dlg.menu_select("File -> Save As")
 
# 保存文件
save_dlg = app["Save As"]
save_dlg.Edit.set_text("test.txt")
save_dlg.Save.click()

說明:type_keys()支持{ENTER}、^s等特殊鍵,menu_select()操作菜單。

案例:某公司用pywinauto模擬鍵盤錄入CRM數(shù)據(jù),1000條記錄從2小時降至10分鐘。

實踐:運行上述代碼,在Notepad輸入文本并保存為test.txt。

5. 實戰(zhàn)案例:Excel自動化數(shù)據(jù)錄入

場景:自動化向Excel表格輸入銷售數(shù)據(jù)并保存。

步驟:

用Application啟動Excel,打開工作簿。

用WindowSpecification定位工作表和單元格。

用鍵盤輸入數(shù)據(jù),鼠標點擊保存。

代碼:

from pywinauto import Application
import time
 
# 啟動Excel
app = Application(backend="uia").start(r"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE")
time.sleep(3)  # 等待Excel啟動
 
# 連接Excel窗口
dlg = app.window(title_re=".*Excel.*")
 
# 打開工作簿(Ctrl+O)
dlg.type_keys("^o")
open_dlg = app["Open"]
open_dlg.Edit.set_text(r"C:\Users\YourUser\Documents\sales.xlsx")
open_dlg.Open.click()
time.sleep(1)
 
# 定位工作表編輯區(qū)域
sheet = dlg.child_window(control_type="Edit").wrapper_object()
 
# 輸入數(shù)據(jù)(3行)
sheet.type_keys("100{ENTER}200{ENTER}300")
 
# 保存并關(guān)閉(Ctrl+S, Alt+F4)
dlg.type_keys("^s")
time.sleep(1)
dlg.type_keys("%{F4}")

說明:time.sleep()確保窗口加載,control_type="Edit"定位Excel編輯區(qū)域。

案例:某零售公司用pywinauto自動化Excel報表,處理5000條數(shù)據(jù),效率提升95%。

實踐:調(diào)整文件路徑,運行上述代碼,向Excel輸入3行數(shù)據(jù)并保存。

6. 模擬操作:執(zhí)行自動化測試

場景:模擬用戶輸入、點擊等操作。

方法:

用type_keys()輸入文本,click()模擬鼠標點擊。

支持快捷鍵(如Ctrl+S)和復(fù)雜操作(如菜單選擇)。

code(在Notepad輸入并保存):

from pywinauto import Application
 
app = Application(backend="win32").start("notepad.exe")
dlg = app["Untitled - Notepad"]
edit = dlg.Edit
 
# 輸入文本
edit.type_keys("Hello, pywinauto!")
 
# 保存文件(Ctrl+S)
dlg.type_keys("^s")
save_dlg = app["Save As"]
save_dlg.Edit.set_text("test.txt")
save_dlg.Save.click()
case:某企業(yè)用pywinauto自動化Excel數(shù)據(jù)錄入,1000條數(shù)據(jù)從2小時縮短至10分鐘。
practice:運行上述代碼,在Notepad輸入文本并保存為test.txt。

調(diào)試與優(yōu)化技巧

調(diào)試技巧:

控件定位:用Inspect.exe或print_control_identifiers()確認控件屬性,優(yōu)先用control_type或auto_id。

穩(wěn)定性:添加time.sleep()或dlg.wait("visible")等待窗口/控件就緒。

錯誤排查:捕獲ElementNotFoundError,打印控件樹或窗口標題。

優(yōu)化技巧:

POM模式:封裝控件操作為類,提高腳本復(fù)用性。

Pytest集成:自動化運行測試用例,生成Allure報告。

復(fù)雜操作:用pywinauto.mouse精確控制坐標點擊。

代碼(POM封裝Excel操作):

from pywinauto import Application
 
class ExcelApp:
    def __init__(self):
        self.app = Application(backend="uia").start(r"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE")
        self.dlg = self.app.window(title_re=".*Excel.*")
 
    def input_data(self, data):
        sheet = self.dlg.child_window(control_type="Edit").wrapper_object()
        for value in data:
            sheet.type_keys(f"{value}{{ENTER}}")
 
    def save_and_close(self):
        self.dlg.type_keys("^s")
        self.dlg.type_keys("%{F4}")
 
# 使用
excel = ExcelApp()
excel.input_data([100, 200, 300])
excel.save_and_close()

案例:某團隊用POM重構(gòu)pywinauto腳本,UI變更后維護時間從2天降至2小時。

實踐:用POM重構(gòu)Excel案例,運行測試。

注意事項與常見問題

注意事項:

后端選擇:Win32適合簡單應(yīng)用(如Notepad),UIA適合復(fù)雜WPF/WinForms(如Excel),測試前用Inspect.exe確認。

控件動態(tài)性:控件ID或標題可能隨語言/版本變化,優(yōu)先用control_type或正則表達式。

性能:避免過多time.sleep(),用wait()或wait_until()優(yōu)化。

常見問題:

錯誤:ElementNotFoundError

解決:檢查窗口標題或控件屬性,打印控件樹確認。

錯誤:TimeoutError

解決:延長等待時間或檢查應(yīng)用是否響應(yīng)。

錯誤:InvalidWindowHandle

解決:確保窗口未關(guān)閉,重新連接應(yīng)用。

案例:某項目因控件ID變化報錯,用control_type定位后穩(wěn)定運行。

實踐:模擬一個錯誤(如錯誤標題),根據(jù)日志排查。

Application

我們要控制軟件的第一件事就是啟動一個Windows軟件,每一個軟件(進程)都是一個Application對象

實例化Application對象的時候可以傳入一個backend參數(shù),可選值為win32(默認)和uia 

  • win32對應(yīng)的框架:MFC、VB6、VCL、簡單的 WinForms 控件和大多數(shù)舊的遺留應(yīng)用程序
  • uia對應(yīng)的框架:WinForms、WPF、商店應(yīng)用程序、Qt5、瀏覽器

如果無法知道要測試的軟件是屬于哪種框架,可以使用 Inspect(對應(yīng)uia) 和 Spy++(對應(yīng)win32)看看,你看哪個顯示得更全就選哪個。Inspect和Spy++需要自己安裝一下

社會現(xiàn)象分析

pywinauto通過Application啟動/連接應(yīng)用、WindowSpecification定位控件,結(jié)合鍵盤鼠標操作,輕松實現(xiàn)Windows GUI自動化。從Notepad的簡單輸入到Excel的復(fù)雜數(shù)據(jù)錄入,五大步驟覆蓋測試、RPA和數(shù)據(jù)處理全場景。掌握pywinauto,你不僅能解放雙手,還能解鎖無限自動化可能。無論是測試工程師還是RPA開發(fā)者,pywinauto都是你的武器。

pywinauto是Windows自動化領(lǐng)域的明星工具。Gartner 2024報告顯示,桌面應(yīng)用測試和RPA需求增長35%,pywinauto因開源和易用性備受青睞。其在GUI測試中的靈活性,認為其“填補了Windows自動化空白”。

開源社區(qū)(如pywinauto GitHub)的Star數(shù)超1.5萬,反映開發(fā)者熱情。企業(yè)中,pywinauto廣泛用于ERP、CRM和金融系統(tǒng)自動化,如某銀行用pywinauto自動化交易錄入,效率提升80%。AI驅(qū)動的GUI測試工具也在崛起,但pywinauto的輕量性和Python生態(tài)優(yōu)勢使其仍占主流。

總結(jié)

在傳統(tǒng)的測試場景中,Web 自動化如 Selenium 已非常成熟,但對于大量仍存在的桌面應(yīng)用,許多公司依舊依賴手工測試,效率低下、成本高昂。而 pywinauto 的興起,正填補了這一自動化盲區(qū),幫助測試工程師全面掌控桌面測試環(huán)節(jié)。

pywinauto 不是黑魔法,而是一把趁手的工具。只要你熟悉 Python 基礎(chǔ),就能輕松上手。它讓測試不僅限于網(wǎng)頁和接口,更延伸到桌面端,真正實現(xiàn)端到端的自動化閉環(huán)。

以上就是Python Pywinauto輕松實現(xiàn)Windows桌面自動化詳解的詳細內(nèi)容,更多關(guān)于Python Pywinauto自動化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • win10系統(tǒng)下python3安裝及pip換源和使用教程

    win10系統(tǒng)下python3安裝及pip換源和使用教程

    這篇文章主要介紹了win10系統(tǒng)下python3安裝及pip換源和使用教程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • django Admin文檔生成器使用詳解

    django Admin文檔生成器使用詳解

    這篇文章主要介紹了django Admin文檔生成器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Python讀取文件內(nèi)容的三種常用方式及效率比較

    Python讀取文件內(nèi)容的三種常用方式及效率比較

    這篇文章主要介紹了Python讀取文件內(nèi)容的三種常用方式及效率比較,結(jié)合具體實例形式給出了三種文件讀取的常見方法并對比分析了讀取速度,需要的朋友可以參考下
    2017-10-10
  • 徹底卸載anaconda詳細教程(推薦!)

    徹底卸載anaconda詳細教程(推薦!)

    用anaconda更改我的python版本,就是出現(xiàn)了凍結(jié)無法更改等等之類的問題,擔心更新anaconda還是會出錯,于是打算卸載anaconda,重新下載一個安裝,下面這篇文章主要給大家介紹了關(guān)于徹底卸載anaconda的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • matplotlib實現(xiàn)自定義散點形狀marker的3種方法

    matplotlib實現(xiàn)自定義散點形狀marker的3種方法

    本文主要介紹了matplotlib實現(xiàn)自定義散點形狀marker的3種方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 使用Python在PowerPoint幻燈片中添加水印

    使用Python在PowerPoint幻燈片中添加水印

    在PowerPoint演示文稿中插入文本水印是保護版權(quán)并確保文檔內(nèi)容真實性的有效方式,本文將演示如何使用Python插入文字水印到PowerPoint演示文稿,感興趣的可以了解下
    2024-11-11
  • python 如何執(zhí)行控制臺命令與操作剪切板

    python 如何執(zhí)行控制臺命令與操作剪切板

    這篇文章主要介紹了python 如何執(zhí)行控制臺命令與操作剪切板,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python超詳細講解內(nèi)存管理機制

    Python超詳細講解內(nèi)存管理機制

    本章主要介紹Pyhon的內(nèi)存管理,以Pyhon的計數(shù)機制作為引入,介紹Pyhon的內(nèi)存管理方式,感興趣的朋友來看看吧
    2022-06-06
  • Python logging模塊原理解析及應(yīng)用

    Python logging模塊原理解析及應(yīng)用

    這篇文章主要介紹了Python logging模塊原理解析及應(yīng)用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • python讀取LMDB中圖像的方法

    python讀取LMDB中圖像的方法

    這篇文章主要為大家詳細介紹了python讀取LMDB中圖像的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07

最新評論

西乌珠穆沁旗| 建瓯市| 青岛市| 芒康县| 稻城县| 汉沽区| 林周县| 济南市| 镇巴县| 昭平县| 建水县| 正镶白旗| 封丘县| 丰台区| 耒阳市| 九龙坡区| 宁南县| 布拖县| 宝应县| 河西区| 定西市| 尚义县| 忻城县| 瑞安市| 上饶县| 鸡泽县| 昔阳县| 北海市| 南和县| 沅陵县| 翼城县| 会同县| 应城市| 二手房| 平度市| 阿拉尔市| 黔江区| 米林县| 西乌| 灵璧县| 灵宝市|