問題
在做web端ui層自動化的時候會碰到文件上傳的操作,經常有朋友問到,這里總結一下
解決方案
第一種:type=file的上傳文件,類似如下的
使用類似這樣的代碼就可以完成:
1
|
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,內容如下:
1
2
3
4
5
|
ControlFocus( "文件上傳" , " "," Edit1") WinWait( "[CLASS:#32770]" ,"", 10 ) Sleep( 2000 ) ControlClick( "文件上傳" , " "," Button1"); |
上述代碼中特別需要注意“文件上傳”字樣是你點擊上傳按鈕之后彈出的對話框的title,可能每個系統會不一樣
5、驗證腳本
保證頁面的上傳對話框打開,然后運行腳本tools>go
6、打開Compile Script to.exe工具,將其生成為exe可執行文件
7、python腳本中調用
1
2
3
4
|
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 模擬按鍵
總結
以上所述是小編給大家介紹的python+selenium+autoit實現文件上傳,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:http://www.tuicool.com/articles/MFrmmaf