1. 程式人生 > 其它 >selenium+python上傳檔案

selenium+python上傳檔案

上傳檔案控制元件有兩種:一種是input標籤,另外一種是非input標籤,比如button標籤、div標籤等

一、input標籤很簡單,使用send_keys就可以,只是有時候要用js將元素改為可輸入,dr.find_element(By.XPATH, '//div[text()="+上傳圖片"]').send_keys(pic_path)

二、非input標籤

我們這裡使用WinSpy工具(充當類似F12定位元素的功能),和pywin32工具(操作Windows視窗)

一)WinSpy工具的安裝和使用:

1.下載WinSpy ,解壓即可使用

下載地址:https://sourceforge.net/projects/winspyex/

2.在winspy工具左上角是個聚焦按鈕,通過拖動的方式拖動到上傳彈出框的對應位置(如檔案路徑輸入框)後鬆開,winspy介面會顯示當前定位的Text文字值(此處為空)和Class屬性值(Edit)

 

 點選下面的【Tree】按鈕,可以展示當前元素的上下級。可以看到,Edit父級是ComboBox,ComboBox父級是ComboBoxEx32,ComboBoxEx32父級是#32770,它的父級是Desktop(桌面),所以當前視窗的根節點是#32770。理清關係後,可以進入下面的寫程式碼環節。

 

 

二)安裝及使用pywin32

1.安裝pywin32:

命令列執行:pip install -i https://pypi.douban.com/simple pywin32

2.匯入及使用
import win32gui
import win32con

# 一級視窗"#32770",
dialog = win32gui.FindWindow("#32770", "開啟")
# 向下傳遞
ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None) # 二級
comboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, "ComboBox", None) # 三級
# 編輯按鈕
edit = win32gui.FindWindowEx(comboBox, 0, 'Edit', None) # 四級
# 開啟按鈕
button = win32gui.FindWindowEx(dialog, 0, 'Button', "開啟(&O)") # 二級

# 輸入檔案的絕對路徑,點選“開啟”按鈕
pt = obj_path + "\\pic\\hua.jpg"
print(pt)
win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, pt) # 傳送檔案路徑
# win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, 'D:\\wuxx\\PycharmProjects\\pythonProject\\hua.jpg') # 傳送檔案路徑
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 點選開啟按鈕'''