首頁>技術>

最近的專案需要用一個軟體批次生產出一些檔案,但是這個軟體並沒有提供二次開發介面。這也難不倒我們強大的 Python!

先介紹一個 Python 庫 pywinauto。它可以實現 Windows 的介面自動化,可以對視窗和控制元件進行操作,而且非常簡單。

pywinauto 實現了兩套引擎 win32 和 UIA(UI Automation)。win32 引擎是利用了介面控制元件的 win32 訊息進行互動,標準 Windows 程式的控制元件都能支援這些訊息。UIA 是一套無障礙介面,給盲人用的讀屏軟體和介面測試軟體都會用到此介面。UIA 是 COM 介面,幾乎所有語言都能呼叫它。透過 UIA 在介面上取得資訊,也能操作介面的控制元件。國外的比較有名的軟體都會支援這兩種介面,或者支援其中一個。國內軟體,幾乎不支援。

首先安裝 pywinauto
pip 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 還是極大地提高了開發效率。

21
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 這12個關於軟體測試的誤解,是時候澄清了