問題
在做web端ui層自動(dòng)化的時(shí)候會(huì)碰到文件上傳的操作酌呆,經(jīng)常有朋友問到医吊,這里總結(jié)一下
解決方案
第一種:type=file的上傳文件踩麦,類似如下的
使用類似這樣的代碼就可以完成:
driver.find_element('name','file').send_keys('./小強(qiáng)測試品牌.png')
第二種:就是第一種除外的佛猛,實(shí)現(xiàn)起來較為麻煩制妄,這里用到了autoit祠锣,大致步驟如下:
1酷窥、下載并安裝autoit,之后在開始菜單可以看到如下
AutoIt Windows Info 用于識(shí)別Windows控件信息
Compile Script to.exe 用于將AutoIt生成 exe 執(zhí)行文件
Run Script 用于執(zhí)行AutoIt腳本
SciTE Script Editor 用于編寫AutoIt腳本
2伴网、上傳功能如下
3蓬推、識(shí)別元素,主要是上圖中的文件名輸入框和打開按鈕澡腾,使用AutoIt Windows Info完成沸伏,記錄結(jié)果如下:
文件名輸入框的class 為“Edit”,Instance為“1”
打開按鈕的class 為“Button”动分,Instance為“1”
4毅糟、編寫腳本,使用SciTE Script Editor澜公,內(nèi)容如下:
ControlFocus("文件上傳", "","Edit1")
WinWait("[CLASS:#32770]","",10)
ControlSetText("文件上傳", "", "Edit1","D:python_workspaceQiangSEAutopic小強(qiáng)測試品牌.jpg")
Sleep(2000)
ControlClick("文件上傳", "","Button1");
上述代碼中特別需要注意“文件上傳”字樣是你點(diǎn)擊上傳按鈕之后彈出的對話框的title留特,可能每個(gè)系統(tǒng)會(huì)不一樣
5、驗(yàn)證腳本
保證頁面的上傳對話框打開玛瘸,然后運(yùn)行腳本tools>go
6蜕青、打開Compile Script to.exe工具,將其生成為exe可執(zhí)行文件
7糊渊、python腳本中調(diào)用
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)
其他
其實(shí)還有其他的解決方法右核,感興趣的自行研究吧,比如還可以利用如下的方式:
Python pywin32庫渺绒,識(shí)別對話框句柄贺喝,進(jìn)而操作
SendKeys 庫
keybd_event 模擬按鍵