AutoIt目前最新是v3版本锈津,這是一個使用類似BASIC腳本語言的免費軟件,它設計用于Windows GUI(圖形用戶界面)中進行自動化操作壁酬。它利用模擬鍵盤按鍵邓嘹,鼠標移動和窗口/控件的組合來實現(xiàn)自動化任務。
官方網站:https://www.autoitscript.com/site/
從網站上下載AutoIt并安裝擅笔,安裝完成在菜單中會看到圖4.13的目錄:
圖4.13??AutoIt菜單
AutoIt?Windows?Info???用于幫助我們識Windows控件信息志衣。
Compile?Script?to.exe?用于將AutoIt生成?exe?執(zhí)行文件见芹。
Run?Script????????????用于執(zhí)行AutoIt腳本。
SciTE?Script?Editor???用于編寫AutoIt腳本蠢涝。
upload_file
upload_file
將上面的html代碼保存為uplad.html文件玄呛,通過瀏覽器打開,效果如下:
下面以操作upload.html上傳彈出的窗口為例講解AutoIt實現(xiàn)上傳過程和二。
1徘铝、首先打開AutoIt?Windows?Info?工具,鼠標點擊Finder?Tool惯吕,鼠標將變成一個小風扇形狀的圖標惕它,按住鼠標左鍵拖動到需要識別的控件上。
圖4.14??AutoIt?Windows?Info識別“文件名”輸入框控件
圖4.15??AutoIt?Windows?Info識別“打開”按鈕控件
如圖4.14废登、4.15淹魄,通過AutoIt?Windows?Info?獲得以下信息。
窗口的title為“選擇要加載的文件”堡距,標題的Class為“#32770”甲锡。
文件名輸入框的class?為“Edit”,Instance為“1”?羽戒,所以ClassnameNN為“Edit1”缤沦。
打開按鈕的class?為“Button”,Instance為“1”?易稠,所以ClassnameNN為“Button1”缸废。
2、根據AutoIt?Windows?Info?所識別到的控件信息打開SciTE?Script?Editor編輯器驶社,編寫腳本企量。
;ControlFocus("title","text",controlID) Edit1=Edit instance 1
ControlFocus("選擇要加載的文件", "","Edit1")
; Wait 10 seconds for the Upload window to appear
WinWait("[CLASS:#32770]","",10)
; Set the File name text on the Edit field
ControlSetText("選擇要加載的文件", "", "Edit1", "D:\\upload_file.txt")
Sleep(2000)
; Click on the Open button
ControlClick("選擇要加載的文件", "","Button1");
ControlFocus()方法用于識別Window窗口。WinWait()設置10秒鐘用于等待窗口的顯示亡电,其用法與WebDriver?所提供的implicitly_wait()類似届巩。ControlSetText()用于向“文件名”輸入框內輸入本地文件的路徑。這里的Sleep()方法與Python中time模塊提供的Sleep()方法用法一樣逊抡,不過它是以毫秒為單位姆泻,Sleep(2000)表示固定休眠2000毫秒零酪。ControlClick()用于點擊上傳窗口中的“打開”按鈕冒嫡。
AutoIt的腳本已經寫好了,可以通過菜單欄“Tools”-->“Go”?(或按鍵盤F5)來運行一個腳本吧四苇!注意在運行時上傳窗口當前處于打開狀態(tài)孝凌。
3、腳本運行正常月腋,將其保存為upfile.au3蟀架,這里保存的腳本可以通過Run?Script?工具將其打開運行瓣赂,但我們的目的是希望這個腳本被Python程序調用,那么就需要將其生成exe程序片拍。打開Compile?Script?to.exe工具煌集,將其生成為exe可執(zhí)行文件。如圖4.16捌省,
圖4.16??Compile?Script?to.exe生成exe程序
點擊“Browse”選擇upfile.au3文件苫纤,點擊“Convert”按鈕將其生成為upfile.exe程序。
4纲缓、下面就是通過自動化測試腳本調用upfile.exe程序實現(xiàn)上傳了卷拘。
#coding=utf-8fromseleniumimportwebdriverimportos
driver=webdriver.Firefox()#打開上傳功能頁面file_path ='file:///'+ os.path.abspath('upfile.html')
driver.get(file_path)#點擊打開上傳窗口driver.find_element_by_name("file").click()#調用upfile.exe上傳程序os.system("D:\\upfile.exe")
driver.quit()