Selenium系列(十一) – 針對兩種上傳文件方式的實現方案
- 2020 年 3 月 31 日
- 筆記
如果你還想從頭學起Selenium,可以看看這個系列的文章哦!
https://www.cnblogs.com/poloyy/category/1680176.html
其次,如果你不懂前端基礎知識,需要自己去補充哦,部落客暫時沒有總結(雖然我也會,所以我學selenium就不用複習前端了哈哈哈…)
首先,將下面html程式碼保存到一個文件中
後續第一種上傳文件方式的程式碼小案例都是訪問此html的
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input type="file" name="pic" id="pic" /> </body> </html>
方式一:input標籤上傳文件
比較簡單,可以定位input標籤後,直接 .send_keys() 就可以了
# !/usr/bin/env python # -*- coding: utf-8 -*- """ __title__ = __Time__ = 2020/3/25 17:52 __Author__ = 小菠蘿測試筆記 __Blog__ = https://www.cnblogs.com/poloyy/ """ from selenium import webdriver driver = webdriver.Chrome("../resources/chromedriver.exe") # 需要自己修改路徑 driver.get("file:///C://上傳文件.html") driver.maximize_window() # 定位上傳文件元素input[type=file] pic = driver.find_element_by_id("pic") # 上傳文件 pic.send_keys(r"C:/上傳文件.html")
方式二:非input標籤上傳文件
# 打開上傳網站 driver.get("https://tinypng.com/") paths = Path.cwd().parent # 觸發文件上傳的操作 driver.find_element_by_css_selector("section.target").click() time.sleep(2) # 一級頂層窗口 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", None) # 1、輸入文件路徑 filepath = f"{paths}\resources\11.png" win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, filepath) # 2、點擊打開按鈕 win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
這個是寫死的方法,直接照搬即可,因為涉及了第三方工具去定位Window元素,暫時不展開詳解