利用Selenium實現圖片檔案上傳的兩種方式介紹

來源:互聯網
上載者:User

標籤:ace   tor   too   selenium   方式   儲存   sci   目錄   空間   

在實現UI自動化測試過程中,有一類需求是實現圖片上傳,這種需求根據開發的實現方式,UI的實現方式也會不同。

一、直接利用Selenium實現

     這種方式是最簡單的一種實現方式,但是依賴於開發的實現。

    當開發直接使用file類型的input實現圖片檔案的上傳時,執行個體:<input type="file" name=‘‘filename">

    我們可以直接利用Selenium提供的方法實現檔案上傳,但是因為依賴開發的實現,而且目前實現基本都會利用架構,所以這種實現方式有很大的局限性。

  •   首先找到元素:WebElement  file = driver.findElement(By.name("filename"));
  •   給此元素設定值:file.sendKeys("E:\testfile.jpg");

二、利用AutoIT工具實現

       目前,一般實現檔案圖片上傳的方式都是有一個按鈕,點擊之後直接叫用作業系統自身的彈框,選擇檔案後,實現上傳。因為Selenium不支援叫用作業系統的操作,所以這種情況下,利用Selenium無法完成圖片上傳,這時,我們可以選擇借用其他工具實現。

1、AutoIT介紹

     AutoIT是一個類似指令碼語言的軟體,利用此軟體我們可以方便的實現類比鍵盤、滑鼠、視窗等操作,實現自動化。

2、實現原理

     利用AutoIT編寫合適的指令碼,然後將指令碼編譯成可執行檔,在自動化實現時,直接調用此指令碼實現檔案上傳。

     備忘:編寫指令碼和編譯,需要藉助AutoIT提供的工具,但是指令碼編譯成可執行檔後,可以直接使用,不再需要安裝AutoIT。

3、自動化調用

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

  執行個體:

  假如,要上傳圖片的頁面及html顯示如下:

      

   利用AutoIT編寫的指令碼編譯後的可執行檔的存放目錄:E:\upfile.exe

  自動化實現代碼:

  

4、AutoIT安裝

  • 下載並安裝AutoIT,下載連結:https://www.autoitscript.com/site/autoit/
  • AutoIT安裝成功後,可以在開始菜單下看到AutoIT的所有工具,如所示:
  •      其中分為幾類,AutoIT Window Info用來識別Windows控制項,根據識別的控制項資訊編寫指令碼;Complie Script to .exe,用來將利用AutoIt編寫的指令碼,編譯成可執行檔;Run Script 用來執行AutoIT的指令碼資訊;SciTE Script Editor用來編寫AutoIt指令碼。
  • 接下來就是利用以上四種工具,來編寫AutoIT指令碼,然後編譯成可執行檔

5、利用AutoIT編寫指令碼

(1)  AutoIt Window Info 

       開啟此工具,利用此工具來識別Windows控制項資訊,如輸入框、按鈕等。

      此工具開啟的介面顯示:

     用滑鼠拖住工具上的Finder Tool的表徵圖(即圖中藍色圈圈部分)到要識別的控制項上,控制項的唯一標識資訊會顯示在工具的左側部分(圖中紅框標出的部分)。

    從顯示的結果得知,此控制項的Title=“開啟”,Class為Button,Instance=1。我們就是利用控制項的這些資訊,定位控制項,編寫指令碼。

(2) SciTE Script Editor

     根據以上所識別的空間資訊,利用此編輯器,利用此軟體根據AutoIT的文法編寫指令碼。

     附實現檔案上傳需要的幾個方法:  

    ControlFocus ( "視窗標題", "視窗文本", 控制項ID)   設定輸入焦點到指定視窗的某個控制項上

    WinWait ( "視窗標題" [, "視窗文本" [, 逾時時間]] )  暫停指令碼的執行直至指定視窗存在(出現)為止

    ControlSetText ( "視窗標題", "視窗文本", 控制項ID, "新文本" )   修改指定控制項的文本

    Sleep ( 延遲 )   使指令碼暫停指定時間段

    ControlClick ( "視窗標題", "視窗文本", 控制項ID [, 按鈕] [, 點擊次數]] )   向指定控制項發送滑鼠點擊命令

    其中,title即AutoIt Window Info識別出的Title欄位,controlID即AutoIt Window Info識別出的Class和Instance的拼接,如拼接後的結果應為:Button1

    執行個體:

        

    AutoIT指令碼編寫完成後,可以通過功能表列“Tools”-->“Go” 運行一下指令碼。注意,啟動並執行時候,上傳視窗需處於開啟狀態。

6、AutoIT指令碼編譯成可執行檔

     指令碼編輯運行無誤後,將其儲存。然後開啟Complie Script to .exe工具,將儲存的指令碼編譯成exe可執行檔。

     

    點擊“Browse”選擇儲存的指令檔,點擊“Convert”將其產生exe檔案。

    至此,利用AutoIT實現圖片上傳的流程結束。

利用Selenium實現圖片檔案上傳的兩種方式介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.