最近的專案需要用一個軟體批次生產出一些檔案,但是這個軟體並沒有提供二次開發介面。這也難不倒我們強大的 Python!
先介紹一個 Python 庫 pywinauto。它可以實現 Windows 的介面自動化,可以對視窗和控制元件進行操作,而且非常簡單。
pywinauto 實現了兩套引擎 win32 和 UIA(UI Automation)。win32 引擎是利用了介面控制元件的 win32 訊息進行互動,標準 Windows 程式的控制元件都能支援這些訊息。UIA 是一套無障礙介面,給盲人用的讀屏軟體和介面測試軟體都會用到此介面。UIA 是 COM 介面,幾乎所有語言都能呼叫它。透過 UIA 在介面上取得資訊,也能操作介面的控制元件。國外的比較有名的軟體都會支援這兩種介面,或者支援其中一個。國內軟體,幾乎不支援。
首先安裝 pywinautopip install pywinauto
匯入需要的庫
from pywinauto import applicationfrom pywinauto.keyboard import send_keys
啟動一個記事本
app = application.Application()app.start(r"notepad.exe")app['Notepad'].wait('ready')
在記事本里輸入一些文字
app['Notepad']['Edit'].set_edit_text("測試自動化輸入 abc")
選擇檔案選單退出記事本
app['Notepad'].menu_select("檔案(&F)->退出")
退出時,由於檔案沒儲存會有個提示框。
我們這裡選“不儲存”,看到按鈕上那個帶下劃線的 N 了嗎?它的意思是按 Alt + N 就可以啟動那個按鈕。下面我們模擬按鍵 Alt + N 退出程式。 pywinauto 使用 % 來代替 Alt。
send_keys("%N")
上面只是一些簡單的測試,如果要想真正把這個庫用起來,還是需要 Win32 底層的開發知識和 COM 程式設計知識。Python 只是膠水,把這些技術串在一起。但是,使用 Python 還是極大地提高了開發效率。
最新評論