Selenium自動化測試---檔案上傳處理
在UI測試時,經常碰到上傳檔案功能,一般情況下可採用兩種方法進行模擬,第一種普通上傳,即直接傳檔案路徑;第二種外掛上傳,採用AutoIt方法。
1)普通上傳檔案
普通的上傳是將本地檔案的路徑傳到input標籤中,所以可以直接使用send_keys()來實現
#上傳檔案的html程式碼
<tr>
<td align="right">上傳檔案:</td>
<td>
<input class="inputBg" type="file" size="45" name="message_img">
</td>
</tr>
#先定位到該上傳檔案按鈕,然後使用send_keys傳圖片路徑,實現上傳功能
driver.find_element_by_name("message_img").send_keys(“D:\\11\\a.jpg”)
該種方法實現比較簡單,一般適用於通過input標籤實現的上傳,看作一個輸入框,將上傳檔案路徑傳給程式。但有些上傳如果採用JavaScript或Ajax等技術實現的上傳,該種方法不適用,此時一般採用AutoIt工具上傳
2)AutoIt工具上傳檔案
安裝AutoIt工具:https://www.autoitscript.com/site/
AutoIt工具安裝完後,會有三個程式,分別如下:
AutoIt Windows Info:用於識別Windows控制元件的資訊
SciTE Script Editor:用於編寫AutoIt指令碼
Compile Script to.exe:用於將AutoIt生成exe執行檔案
具體操作如下:
第一步、識別Windows控制元件的資訊(AutoIt Windows Info)
主要識別兩個資訊,一個是檔名輸入框,另一個是開啟按鈕
第二步、編寫AutoIt指令碼(SciTE Script Editor)
;進行聚焦,識別Windows視窗
ControlFocus("[Class:#32770]","","Edit1")
;等待
WinWait("[Class:#32770]","",5)
#檔名輸入框輸入上傳檔案路徑
ControlSetText("[Class:#32770]","","Edit1","D:\11\a.jpg")
Sleep(2000)
#點選開啟按鈕
ControlClick("[Class:#32770]","","Button1")
備註:第一個引數使用控制元件的titile進行定位,但經常無法定位到,建議使用Class
第三步、生成exe執行檔案(Compile Script to.exe)
儲存後,點選Tools—Go—生成exe檔案
第四步、執行生成的exe檔案進行檔案上傳,在python指令碼中新增下面程式碼,讓指令碼執行exe檔案上傳程式
import os
#點選“選擇檔案”按鈕,彈出上傳框
driver.find_element_by_name("message_img").click()
#選擇上傳檔案,進行上傳
os.system("D:\\11\\test3.exe")