使用AutoIt實現文件上傳


       在網頁上上傳文件的時候,Selenium無法直接操作如Flash、JavaScript 或Ajax 等技術所實現的上傳功能,這時候我們需要借用一個叫做AutoIt的軟件來幫助我們事先自動化的上傳操作。

  官方網站:https://www.autoitscript.com/site/autoit/

  1、AutoIT介紹
      AutoIT是一個類似腳本語言的軟件,利用此軟件我們可以方便的實現模擬鍵盤、鼠標、窗口等操作,實現自動化。
 
  2、使用特點
      利用AutoIT編寫合適的腳本,然后將腳本編譯成可執行文件,在自動化實現時,直接調用此腳本實現文件上傳。
      備注:編寫腳本和編譯,需要借助AutoIT提供的工具,但是腳本編譯成可執行文件后,可以直接使用,不再需要安裝AutoIT。
 
  3、自動化調用

    AutoIT腳本編譯成可執行文件后,放到本地的某一個目錄下。自動化實現過程中,需要上傳圖片時,首先定位到【上傳】字樣文本,點擊此按鈕。執行編輯后的可執行文件,實現文件上傳。

 

  為了方便我們的操作和說明,我們首先來自己寫一個Html來模擬實際的上傳框

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>文件上傳實例</title>
  </head>
  <body>
      <h1>文件上傳實例</h1>
        <form method="post" action="/TomcatTest/UploadServlet"enctype="multipart/form-data">選擇一個文件: <input type="file" name="uploadFile" /> <br />
          <br /> <input type="submit" value="上傳" />
      </form>
  </body>
</html>

  將代碼復制到txt,然后將文件的擴展名改成html再用瀏覽器打開就可以使用了。

  從官網上面下載AutoItv3並安裝,安裝好了之后可以在開始菜單看到AutoIt的各種工具。

 

 

   

其中分為幾類,
  • AutoIT Window Info用來識別Windows控件,根據識別的控件信息編寫腳本;
  • Complie Script to .exe,用來將利用AutoIt編寫的腳本,編譯成可執行文件;
  • Run Script 用來執行AutoIT的腳本信息;
  • SciTE Script Editor用來編寫AutoIt腳本。
  • 接下來就是利用以上四種工具,來編寫AutoIT腳本,然后編譯成可執行文件。

  下面我們就可以來使用AutoIt來操作上傳文件了。首先,打開AutoIT Window Info,利用此工具來識別Windows控件信息,如輸入框、按鈕等。以剛才我們自己寫的那個Html為例:

  

 

 

 

  用鼠標拖住工具上的Finder Tool的圖標(即圖中藍色圈圈部分)到要識別的控件上,控件的唯一標識信息會顯示在工具的左側部分(圖中紅框標出的部分)。
  從顯示的結果得知,此控件的Title=“打開”,Class為Edit,Instance=1。我們就是利用控件的這些信息,定位控件,編寫腳本。
 
  我們這里需要知道有以下信息:
  1.操作頁面的title,用於固定操作的頁面。
  2.需要填入的信息,在輸入框中填入“上傳文件的路徑及文件名”(windows操作)
  3.點擊“打開”按鈕,實現文件上傳。
 
    根據以上所識別的控件信息,利用編輯器SciTE Script Editor,根據AutoIT的語法編寫腳本。
    實現文件上傳需要的幾個方法:  
  ControlFocus ( "窗口標題", "窗口文本", 控件ID)   
    ---->設置輸入焦點到指定窗口的某個控件上(即:控件ID“文件名”輸入框的id)
  WinWait ( "窗口標題" [, "窗口文本" [, 超時時間]] )  
    ---->暫停腳本的執行直至指定窗口存在(出現)為止
  ControlSetText ( "窗口標題", "窗口文本", 控件ID, "新文本" )   
    ---->修改指定控件的文本(即:控件ID“文件名”輸入框的id)
  Sleep ( 延遲 )   
    ---->使腳本暫停指定時間段
  ControlClick ( "窗口標題", "窗口文本", 控件ID [, 按鈕] [, 點擊次數]] )   
    ---->向指定控件發送鼠標點擊命令(即:控件ID“打開”按鈕的id)
  其中,title即AutoIt Window Info識別出的Title字段,controlID即AutoIt Window Info識別出的Class和Instance的拼接,如上圖拼接后的結果應為:Button1(即classnameNN)
 
 上傳程序腳本:
ControlFocus("打開","","Edit1")
;識別windows窗口
WinWait("[CLASS:#32770]","",10)
;窗口等待十秒
ControlSetText("打開", "", "Edit1", "f:\abc\xyz.txt")
;想輸入框中輸入需要上傳的地址
Sleep(2000)
ControlClick("打開", "","Button1");
;點擊[打開】按鈕
  AutoIT腳本編寫完成后,保存后才可以通過菜單欄“Tools”-->“ Go” 運行一下腳本。 注意,運行的時候,上傳窗口需處於打開狀態。
       腳本編輯運行無誤后,將其保存。然后打開Complie Script to .exe工具,將保存的腳本編譯成exe可執行文件。

 

   在轉換成.exe文件之后,我們即可在java程序中對其進行調用。

Runtime upload = Runtime.getRuntime();
try {
  String au3exe = "F:\\abc\\up1.exe";
    upload.exec(au3exe);
}catch (IOException e){
    System.out.println("Fail to upload!");
    e.printStackTrace();
}

  這樣,我們就實現了利用AutoIt的自動上傳功能。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM