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元素,暂时不展开详解

 

posted @ 2020-06-19 21:12  xinhua  阅读(224)  评论(0编辑  收藏  举报