本文主要用到一個uiautomation的開源框架,是一個我們們中國人寫的,支援MFC,Windows Forms,WPF,Metro,Qt介面;此文主要是自己的個人總結,開源作者原文:http://www.cnblogs.com/Yinkaisheng/p/3444132.html
此自動化的主要思想是利用此框架抓取到程式的各種控制程式碼,然後對控制程式碼執行各種操作。
一、uiautomation方法
1、WindowContrl(searchDepth,ClassName,SubName) 查詢視窗中的程式,如果有中文則需用Unicode;可用window.Exists(maxSearchSeconds)來判斷此視窗是否存在;
2、EditControl(searchFromControl) 查詢編輯位置,找到後可用DoubleClick()來改變電腦的focus;edit.SetValue("string")輸入值;
3、Win32API.SendKeys("string") 如果已在編輯位置,則可用此方法來輸入值,{Ctrl}為ctrl鍵,其他類似;{@ 8}格式可輸入8個@,對於數字也可實現此功能,但對於字母不能...;
4、MenuItemControl(searchFromControl,Name) 查詢選單按鈕;
5、ComboBoxControl(searchFromControl,AutomationI) 查詢下拉框,然後在此基礎上用Select("name")方法來選擇需要的選項;
6、BottonControl(searchFromControl,Name,SubName) 查詢按鈕;
7、automation.FindControl(firefoxWindow,
lambda c:(isinstance(c, automation.EditControl) or isinstance(c, automation.ComboBoxControl)) and c.Name == 'Enter your search term'
) 按條件搜尋handle
二、對找到控制程式碼常用操作
Click() 點選;
RighClik() 右鍵點選;
SendKeys() 傳送字元;
SetValue() 傳值,一般對EditControl用;
三、對windows程式常用操作
subprocess.Popen('Name') 用程式開啟程式;
window.Close() 關閉視窗;
window.SetActive() 使用;
window.SetTopMost() 設定為頂層
window.ShowWindow(uiautomation.ShowWindow.Maximize) 視窗最大化
window.CaptureToImage('Notepad.png') 截圖;
uiautomation.Win32API.PressKey(uiautomation.Keys.VK_CONTROL) 按住Ctrl鍵
uiautomation.Win32API.ReleaseKey(uiautomation.Keys.VK_CONTROL) 釋放Ctrl鍵
automation.GetConsoleWindow() #return console window that runs python,開啟控制檯
automation.Logger.ColorfulWriteLine('\nI will open <Color=Green>Notepad</Color> and <Color=Yellow>automate</Color> it. Please wait for a while.') 控制檯傳值(彩色字型),普通傳值用WriteLine;
automation.ShowDesktop() 顯示桌面;
四、控制程式碼的抓取
直接執行automation模組列舉視窗時,支援下列引數(從doc視窗執行automation.py程式 ):
-t intValue 延遲列舉時間,單位秒
-r 從樹的根部列舉,如果不指定,從當前視窗列舉
-d intValue 列舉控制元件樹的的深度,如果不指定,列舉整個樹
-f 從焦點控制元件列舉,如果不指定,從當前視窗列舉
-c 從游標下的控制元件列舉,如果不指定,從當前視窗列舉
-a 獲取游標下控制元件及其所有父控制元件
-n 顯示控制元件的完整Name, 如果不指定,只顯示前30個字元
-m 顯示控制元件更多屬性,預設只顯示控制元件的四個屬性
示例:
automation.pyc –t3, 3秒後列舉當前視窗所有控制元件
automation.pyc –d2 –t3, 3秒後列舉當前視窗前三層控制元件
automation.pyc –r –d1 –t0 -n, 0秒後從根部列舉前兩層控制元件,並顯示控制元件完整名稱
automation.pyc –c –t3, 3秒後顯示滑鼠游標下面的控制元件資訊