天天看點

python+selenium+autoit實作檔案上傳問題解決方案其他

在做web端ui層自動化的時候會碰到檔案上傳的操作,經常有朋友問到,這裡總結一下

第一種:type=file的上傳檔案,類似如下的

使用類似這樣的代碼就可以完成:

driver.find_element('name','file').send_keys('./小強測試品牌.png')

第二種:就是第一種除外的,實作起來較為麻煩,這裡用到了autoit,大緻步驟如下:

1、下載下傳并安裝autoit,之後在開始菜單可以看到如下

AutoIt Windows Info 用于識别Windows控件資訊

Compile Script to.exe 用于将AutoIt生成 exe 執行檔案

Run Script 用于執行AutoIt腳本

SciTE Script Editor 用于編寫AutoIt腳本

2、上傳功能如下

3、識别元素,主要是上圖中的檔案名輸入框和打開按鈕,使用AutoIt Windows Info完成,記錄結果如下:

檔案名輸入框的class 為“Edit”,Instance為“1”

打開按鈕的class 為“Button”,Instance為“1”

4、編寫腳本,使用SciTE Script Editor,内容如下:

ControlFocus("檔案上傳", "","Edit1")

WinWait("[CLASS:#32770]","",10)

ControlSetText("檔案上傳", "", "Edit1","D:python_workspaceQiangSEAutopic小強測試品牌.jpg")

Sleep(2000)

ControlClick("檔案上傳", "","Button1");

上述代碼中特别需要注意“檔案上傳”字樣是你點選上傳按鈕之後彈出的對話框的title,可能每個系統會不一樣

5、驗證腳本

保證頁面的上傳對話框打開,然後運作腳本tools>go

6、打開Compile Script to.exe工具,将其生成為exe可執行檔案

7、python腳本中調用

up=self.driver.find_element('class name','avatar-uploader-trigger')

up.find_element('class name','ant-btn').click()

os.system('D:\python_workspace\QiangSEAuto\upload.exe')

time.sleep(20)

其實還有其他的解決方法,感興趣的自行研究吧,比如還可以利用如下的方式:

Python pywin32庫,識别對話框句柄,進而操作

SendKeys 庫

keybd_event 模拟按鍵

本文轉自 小強測試幫 51CTO部落格,原文連結:http://blog.51cto.com/xqtesting/1958454,如需轉載請自行聯系原作者