今日別來無恙,在主管臨走之前,說了請你們務必好好的玩一下自動化程式,今天就在googl上翻箱倒櫃了找了一番,看了不少有關於測試的文件,也介紹了很多的測試的意義!

在今日看到市面上有非常多自動化的程式,Pywinauto就是個厲害的自動化程式,是使用python去做的開源程式,有興趣人可以去官方的github fork下來玩玩喔!

 

Pywinauto官方網站

 

進入主題,今天的主角是我們的autoIT,其實在一開始我跟後座的夥伴,他念autoIT,而我念autoIT,前座的朋友則是念autoIT,真是一個小小的辦公室就有不同的風情阿lol

 

我們首要步驟先去官方網站捉autoIT

 

AUTOIT懶人連結

 

AUTOIT V.3.3.14.2 更新的話不負責阿(菸

 

接下來,就是一路狂點到結尾啦,不過要注意一下他在系統這個選項(下圖),如果你的OS是64位元,他還是會把你擺在x86,所以要自己去選到上面的x64

 

 

太棒了!我們會自動化了可以開始寫自動化的程式碼了!

我們這一次使用打開記事本為主要目的來帶領大家一步一步走向自動化之路

一開始我們要先認識一下安裝完之後我們新增的主要夥伴有哪些

 

About Help - 這是關於我們的超級手冊,閒來無視就是要打開這本練練功,有問題看他,沒問題也要看他!

 

Autoit Window Info 這是超級重要的偵測程式元件的exe,我們會在下頭介紹他該如何使用

 

SciTE Script Editor 這就是我們scipt的編輯器,裏頭就可以直接compile並且build出來,超級方便的吧!連gcc都不用下

 

那我們首先要先打開我們的Autoit的ide(SciTE Script Editor),接著輸入

 

 

接著在桌面開個資料夾儲存他,並且點擊你的Script,如果你點兩下跑出來的是你的IDE畫面,那麼就是你在安裝的過程中,把一開始選擇要點擊這類檔案的Default給選掉了,你只需要右鍵選Run Script即可

 

在點擊之後,就可以成功看見我們的記事本跑出來啦!是不是很神奇呢傑克!Run其實不僅打名稱就可以開啟,也可以使用絕對路徑來開啟程式喔!

 

Run("c:\test.exe")

 

在成功跑出記事本後,我們終於成功了第一步,再來我們要開始是捉取我們物件的資訊了,這時就可以使用到我們的捕捉器(Autoit Window Info),我們把它點開之後可以看見

 

 

我們的有個神奇的小棒棒,就是我們的Finder Tool,它的使用是把她拖拉到你要的位置,這樣就可以取得你要的物件資訊,而我現在把finder Tool拖拉到text的視窗當中,就可以看到下圖的資訊

 

 

再來我們要介紹一個特別的指令 WinWaitActive,它能夠等待你所選定的視窗顯示後,在開始之後的指令,讓我們看看該如何使用吧!

 

 

我們可以看見我們裏頭打了一個("未命名 - 記事本"),對應到我們的info中,裏頭有一個title,這裡就是要輸入title,藉以找尋到符合這一個要求的物件,接下來我們就是要讓他乖乖聽話,打一些字,自動的方式輸入文字

 

 

是不是很棒呢!又邁向一部自動的一步了XD最後我們要把這個記事本給關閉,我們使用到了WinClose,這函數可以找到指定的視窗,並且去點擊X

 

 

結果我們遇到了這個問題,我們又得去教出我們的info來查看這個視窗的底細了,我們把finder拉進了記事本的這個提示框,我們點擊visbale Text可以找到這個視窗還擁有的其他文字,而這一點我們厲害的winWaitActive可厲害了,後頭可以加非常多個條件來助於更精準的等到你要的視窗

 

 

最後我們就是怒把這個記事本給關掉了,當然是給她不要儲存,儲存的都教你自己去尋找吧(超懶,最後我們有兩種方式可以關閉程式,最簡單的方法只需要模擬key進熱鍵Alt + n,也就是用key來做最後的尾刀

 

 

再者第二種方法是比較高端的關閉手法,也是未來如果你撰寫到了無法使用熱鍵的案件,可以使用的方法,我們使用到的是controlClick,我們把Finder Tool的小棒棒拉到按鍵的  不要儲存(&N)  ,再來我們觀察到control有非常多的資訊,而我們需要留意的是最上頭的title與案件中的文字,最後是controlID,這個ID有非常多個看法,我們這個例子可以直接複製Advanced Mode的資訊到我們的第三個參數,如果Advanced Mode不是class與instance組合的話,可以自己找出class與instance來做修改!

 

 

最後補充一個指定的文字框,雖然記事本只有一個文字框,所以沒什麼好選,但是在之後撰寫如果需要非常多文字框,比如說要大量丟表單的腳本,那就非常需要 ControlSetText 來做文字的輸入

 

 

在第三行可以看見我們有四個參數需要輸入,他分別是

ControlSetText("title","內容","controlID","STRING")

 

title:與上面依樣,就是輸入title

 

內容:此為你指定的textbox的內容,如果沒有或不知道就設定成 "" 即可

 

controlID:與我們剛剛所提的一樣,CLASS + INSTANCE

 

STRING:這裡是輸入你要的指令或字串,剛剛在上頭輸入的{ENTER}就是模擬的ENTER的意思

 

這麼多的測試趕快去玩玩看吧!附上今日的Script,有任何問題善用提問喔!

 

 

arrow
arrow
    全站熱搜

    Rachmaninov 發表在 痞客邦 留言(2) 人氣()