文件上傳操作
一、文件上傳分兩種情況:
1. 如果是input可以直接輸入路徑的,可以直接調send_keys輸入路徑
2. 非input標簽的上傳,需要借助第三方工具:
2.1 Autolt 需要去調用其生成的.au3或.exe文件.----不推薦,了解
2.2 SendKeys第三方庫(目前只支持到2.7版本)----不推薦,了解
2.3 Python pywin32庫,識別對話框句柄,進而操作 ------pip install pywin32
二、文件上傳框,定位工具Winspy:
上傳窗口 dialog(win32gui.FindWindo)=======子窗口:打開按鈕 button (win32gui.FindWindowEx)
||
子窗口 ComboBoxEx32 (win32gui.FindWindowEx)
||
子窗口 ComboBox (win32gui.FindWindowEx)
||
子窗口:文件路徑輸入框 edit(win32gui.FindWindowEx)
舉例: 利用百度網盤,要先登錄百度網盤,並打開上傳文件窗口
-----此代碼可以直接使用,一般不會變動,只需要注意不同的瀏覽器,文件上傳彈窗的第一級窗口的名字不同即可
1 import win32con 2 import win32gui 3 4 def upload(filePath,browser_type="Chrome"): 5 # Chrome瀏覽器 6 if browser_type == "Chrome": 7 title = "打開" 8 # Firefox瀏覽器 9 else: 10 title = "文件上傳" 11 12 dialog = win32gui.FindWindow("#32770",title) #一級窗口 ‘打開窗口’ 13 ComboBoxEx32 = win32gui.FindWindowEx(dialog,0,"ComboBoxEx32",None) #二級 14 ComboBox = win32gui.FindWindowEx(ComboBoxEx32,0,"ComboBox",None) #三級 15 edit = win32gui.FindWindowEx(ComboBox,0,"Edit",None) #四級 16 button = win32gui.FindWindowEx(dialog,0,"Button",None) #四級 17 18 # 往文件名編輯框中輸入文件路徑 19 # 上傳操作 20 win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,filePath) 21 win32gui.SendMessage(dialog,win32con.WM_COMMAND,1,button) #點擊打開按鈕 22 23 24 upload('E:\我\軟件進度.xlsx')