標籤:
Pywinauto是基於Python開發的,用於自動化測試的指令碼模組,主要操作於Windows標準圖形介面。它可以允許你很容易的發送滑鼠、鍵盤動作給Windows的對話方塊和控制項。
其中,最主要功能為對windows標準控制項的一系列動作可程式化處理。包括對視窗的指定、滑鼠或鍵盤操作、獲得控制項屬性等等。程式的開始為對所需應用的啟 動或串連。獲得程式串連後,pywinauto通過視窗的名稱、類名、是否可見等屬性尋找匹配的視窗,進而通過類似方法尋找使用者所需的控制項,並獲得相應的 控制代碼。之後,使用者可通過易理解的編程方式對指定控制項進行相關操作的編程,包括滑鼠點擊、鍵盤輸入、判斷控制項間關係、擷取控制項屬性等。
外結構:
Pywinauto是建立在CPython之上的python應用模組,實現原理由C做底層實現,因此與JPython不能相容。
Python for windows 模組,使得windows api函數有了相應的python介面,其中的ctypes和win32api模組為api函數的對應應用封裝了較為完善的介面集合。
內結構:
程式的入口及對指定視窗或控制項的操作,定義在application.py中。其中Application類進行對應用的開啟和串連,WindowSpecification類自動對應到指定的視窗或控制項上。
HwndWrapper?.py,win32_controls.py,menuwrapper.py,common_controls.py中為 Pywinauto對標準控制項操作的定義。控制項都由HwndWrapper類繼承而來,其中對控制項共有的基本屬性進行了定義。在控制項自己的定義中,對 HwndWrapper類的一些屬性進行了重載,同時也定義了具有自己特色的屬性和操作。對控制項屬性值的擷取和操作定義在 handleprops.py,controlsproperties.py檔案中。
Win32defines.py,win32functions.py,win32structures.py檔案中,為pywinauto對底層函數操 作的定義和索引。其底層調用的是python的ctypes庫函數所提供的介面。Ctypes庫中封裝了系統所使用的C語言資料類型和windows api函數操作等模組,並提供了相應的python語言介面,使使用者通過python可對系統進行操作。
case組織:
我們採用Python的unittest模組的基本結構,來組織自動化case。每一個大的功能模組,為一個類,繼承與 unittest.TestCase。通過在測試類別中添加函數的形式,對測試類別中的每一個測試點(即case)進行代碼編寫。測試類別中,一定要覆蓋的是 setUp()和tearDown()函數,作為每一個單元測試函數的入口和出口。Unittest提供TestSuite類來集合和組織測試類別中的多個 測試函數。同時,提供了TextTestRunner類來運行TestSuite裡的類,並返回通過、錯誤、失敗的測試數量以及已耗用時間。
pywinauto簡單介紹