Python 按鍵精靈自動化

2021-08-07 17:22:55 字數 3644 閱讀 3997

最近在專案中需要進行軟體的自動化操作。

本博文以兩種方式介紹如何自動化開啟軟體(windows下),對其進行最大化最小化關閉等操作。

python操作:

第一次接觸自動化。相對比較熟悉python自然是希望通過python來操作軟體。一般來說,通過程式來操作軟體需要獲得該軟體的控制代碼,然後通過該控制代碼給軟體發訊息來操作該軟體。python中你需要安裝pywin32模組,該模組提供了訪問windows api的擴充套件,利用該模組你可以很方便的進行相關軟體的操作。

這裡先介紹一篇博文,如何利用python和win32減少體力活,這篇博文介紹了pywin32模組,同時,介紹了很多有用的操作,如如何獲取選單控制代碼,下拉欄控制代碼,如何傳送訊息等。有更多的需要可以學習這篇博文,我這裡只介紹如何通過pywin32開啟軟體,最大化,最小化,關閉等基本的操作。

首先是如何開啟軟體。

第一種方式,也是最簡單的方式,利用os模組。比如我想開啟記事本程式,可以:

[python]view plain

copy

defos.system(u"c:\\windows\\system32\\notepad.exe"

)  

os.system(command)中的command即為要執行的命令,也可以附加執行引數。這種方式非常簡單,但是它有個缺點,它是阻塞的,即程式執行到這裡後要等執行的程式執行完成後才能繼續向下執行(個人理解)。

第二種方式是使用win32api中的shellexecute函式。

該函式是非阻塞的。同樣是開啟記事本程式,可以這樣寫:

[python]view plain

copy

defimport

win32api  

# 最後乙個引數表示是視窗屬性,0表示不顯示,1表示正常顯示,2表示最小化,3表示最大化

res = win32api.shellexecute(0

, 'open'

, 'c:\\windows\\system32\\notepad.exe'

, ''

, '', 3

)  

其他方式:還有使用win32process中的createprocess方法和使用ctypes等方式,我這裡沒有用到,繼續學習可以看博文:

python呼叫(執行)外部程式。

接著,是獲取軟體的控制代碼。

開啟軟體後,對於視窗程式可以獲取視窗控制代碼。控制代碼的獲得對於後續操作至關重要。

比如我們開啟了乙個名叫233.txt的記事本程式,想獲得它的控制代碼可以這樣:

[python]view plain

copy

defhwnd = win32gui.findwindow(none

print

hwnd  

接著是通過控制代碼操作軟體,給軟體發訊息:

比如想最大化軟體,將軟體視窗置於最前,關閉軟體:

[python]view plain

copy

# 關閉軟體

win32gui.postmessage(hwnd, win32con.wm_close, 0, 0

)  # 軟體最大化

win32gui.postmessage(hwnd, win32con.wm_syscommand, win32con.sc_maximize, 0

)  # 將軟體視窗置於最前

win32gui.setforegroundwindow(hwnd)  

這裡面涉及到很多windows的訊息型別和引數,具體需要查閱msdn。

按鍵精靈方式:

事實上,自動化軟體在大部分情況下還有更方便的工具,那就是使用按鍵精靈。我這個專案所要自動化的軟體中的很多的視窗控制代碼和操作很難通過程式來直接操作,於是,我又花了一點時間和同伴學了下按鍵精靈。

按鍵精靈是一款模擬滑鼠鍵盤動作的軟體。軟體通過各種滑鼠點定位,螢幕座標或區域取色找色,鍵盤時間模擬,視窗控制代碼操作等等一系列強大的操作能夠幫助實現各類軟體自動化,遊戲自動指令碼等功能。而且精靈指令碼可以進行程式設計製作,對於學過程式設計的人來說更容易(沒學過也很簡單)。

下面我提供一段**,可以實現,精靈檢測乙個名叫記事本.txt的程式有沒有開啟,如果沒有開啟那麼則開啟f盤中的記事本.txt,並對該記事本.txt進行最大化,最小化,恢復視窗,向編輯視窗中寫入一段話,關閉程式等操作。

[plain]view plain

copy

// 搜尋「記事本.txt - 記事本」,找到返回該程式控制程式碼,否則返回空白  

hwndex = plugin.window.search("記事本.txt - 記事本")  

myarray = split(hwndex, "|")  

// 如果程式已經開啟了  

if ubound(myarray)>=0 then   

delay 50  

// 按照視窗名查詢「記事本.txt - 記事本」,並返回該程式的控制代碼,如果沒找到,則返回0  

hwnd = plugin.window.find(0, "記事本.txt - 記事本")  

delay 2000  

// 獲取記事本的編輯視窗控制代碼  

else  //如果軟體沒有開啟,那麼則開啟該軟體  

delay 2000  

hwnd = plugin.window.find(0, "記事本.txt - 記事本")  

delay 2000  

end if  

按鍵精靈的指令碼可以匯出為exe檔案,可以直接供呼叫和執行。

實際操作的情況往往比較複雜,在我的專案裡,我用了python指令碼來模擬和管理要自動化的軟體的執行環境,呼叫按鍵精靈的exe檔案來實現整個軟體的自動化。

Python 按鍵精靈自動化

最近在專案中需要進行軟體的自動化操作。本博文以兩種方式介紹如何自動化開啟軟體 windows下 對其進行最大化最小化關閉等操作。python操作 第一次接觸自動化。相對比較熟悉python自然是希望通過python來操作軟體。一般來說,通過程式來操作軟體需要獲得該軟體的控制代碼,然後通過該控制代碼給...

按鍵精靈對APP自動化測試(下)

由於ios相關工具對作業系統的限制,目前在ios10.0.2系統上應用成功。適用於ios10系統 資料線連線電腦和手機 先將手機越獄,具體步驟如下 還原 還原所有設定 再開啟愛思助手 一鍵越獄 注意將蘋果手機備份 這個沒有操作,因為測試手機不需要備份 並恢復出廠設定 ios10.0.2越獄注意事項 ...

按鍵精靈對APP自動化測試(上)

適用於安卓7及以下系統的手機 2 電腦安裝按鍵精靈手機助手 3.在將手機連線usb前,請先找到開發者選項,開啟 開發者選項 並勾選 usb除錯 4 用資料線將手機連線電腦,連線後,電腦螢幕右下角會提示開始安裝驅動,安裝完後會出現提示成功安裝。6 按鍵精靈手機助手與手機連線成功後,會顯示手機型號,同時...