selenium(7)-针对两种上传文件方式的实现方案
示例代码
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <input type="file" name="pic" id="pic" /> 9 </body> 10 </html>
方法一 :input标签上传文件
比较简单,可以定位input标签后,直接.send_keys()就可以了
1 from selenium import webdriver 2 3 driver = webdriver.Chrome("../resources/chromedriver.exe") 4 5 driver.get("www.baidu,com") 6 driver.maximize_window() 7 8 # 定位上传文件元素input[type=file] 9 pic = driver.find_element_by_id("pic") 10 11 # 上传文件 12 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元素,暂时不展开详解