windows gui測試工具:AutoIt
2017-01-09
1 簡介
2 示例1 記事本自動化操作
3 示例2 上傳文件
1 簡介
AutoIt v3 是用以編寫並生成具有 BASIC 語言風格的腳本程序的免費軟件, 它被設計用來在Windows GUI(用戶界面)中進行自動操作。AutoIt 最初是為PC(個人電腦)的"批量處理"而設計, 用於對數千台PC進行(同樣的)配置. 現在,autoit是一個支持復雜表達式,自定義函數,循環等的強大腳本軟件。
- AutoIt3.chm:幫助文檔
- AutoIt:窗口信息工具
- SciTE.exe:腳本編輯器,可編輯、編譯運行腳本
- AutoIt3.exe:腳本運行器,是一個非常小並且獨立的應用程序,完全不依賴像 .net 或者 vb 使用的厚重的運行庫. 所有您需要運行的腳本都能使用主程序執行
- Aut2Exe:腳本編譯器,進行編碼后轉化成獨立的可執行文件
2 示例1 記事本自動化操作
自動化操作代碼'OperateNotepad.au3':
Run("notepad.exe") WinWaitActive("無標題 - 記事本") Send("This is some text.") WinClose("無標題 - 記事本") WinWaitActive("記事本", "保存(&S)") ;WinWaitActive("Notepad", "Do you want to save") ; When running under Windows XP Send("!n")
抓取窗口信息
圖1 抓取窗口信息
AutoIt腳本轉化成可執行文件
圖2 AutoIt腳本轉化成可執行文件
3 示例2 上傳文件
當上傳控件不是input元素,而是桌面窗口,這個時候利用Selenium的sendkeys方法是行不通的。可以用autoIt來操作。
被測網頁代碼'upload.html':
<body> <input type="file" id="fileControl" value="選擇文件"/> </body>
自動化操作代碼'uploadFile.au3':
;first make sure the number of arguments passed into the scripts is more than 1 If $CmdLine[0]<2 Then Exit EndIf ;if parmas num <2 ,then break ;$CmdLine[0] ;參數的數量 ;$CmdLine[1] ;第一個參數 (腳本名稱后面) ;$CmdLine[2] ;第二個參數 ;都是從cmd傳入參數 handleUpload($CmdLine[1],$CmdLine[2]) ;定義上傳函數,有兩個參數,第一個是瀏覽器名字,第二參數是文件路徑 Func handleUpload($browser, $uploadfile) Dim $title ;定義一個title變量 ;根據彈窗的title來判斷是什么瀏覽器 If $browser="ie" Then ; 代表IE瀏覽器 $title="選擇要加載的文件" ElseIf $browser="chrome" Then ; 代表谷歌瀏覽器 $title="打開" ElseIf $browser="firefox" Then ; 代表火狐瀏覽器 $title="文件上傳" EndIf if WinWait($title,"",4) Then ;等待彈出出現,最大等待時間是4秒 WinActivate($title) ;找到彈出窗口之后,激活當前窗口 ControlSetText($title,"","Edit1",$uploadfile) ;把文件路徑放入輸入框 ControlClick($title,"","Button1") ;點擊保存或者打開或者上傳按鈕 Else Return False EndIf EndFunc
操作
- 把'uploadFile.au3'轉化成'uploadFile.exe''
- 用ie打開被測網頁代碼'upload.html',並點擊'瀏覽'元素,系統自動打開桌面瀏覽窗口,如下圖3所示
- 打開cmd.exe窗口,輸入以下命令,按回車執行,結果如下圖所示
"D:\TestUploadFileWithAutoit\uploadFile.exe" "ie" "D:\TestUploadFileWithAutoit\1.png"
圖3 點擊‘瀏覽...’按鈕,打開瀏覽桌面窗口
圖4 上傳后結果
Java調用Upload.exe代碼:
public void handleUpload(String browser, File file) { String filePath= file.getAbsolutePath(); String executeFile= "D:\\TestUploadFileWithAutoit\\UploadFile.exe"; String cmd= "\""+ executeFile+ "\""+ " "+ "\""+ browser+ "\""+ " "+ "\""+ filePath+ "\""; try{ Process p= Runtime.getRuntime().exec(cmd); p.waitFor(); } catch(Exception e) { e.printStackTrace(); } }