input上传:
找到对应的元素,使用send_keys(‘filePath’)即可:
例:
#上传封面图
webDriver.find_element(By.NAME,'file').send_keys('E:\Picture\飞慕课\car1.png')
非input上传:
比如div、a、button 等标签下上传文件:
方法一:通过Python的pywin32 模块的键盘按键操作上传
pywin32模块安装:
1.pycharm安装:
从File---Settings---Pythoninterpreter进入设置页面添加即可


2.IDLE安装
管理员进入cmd,路径进入python安装文件中的Script目录,输入:pip install pywin32;出现以下样式代表安装成功

通过pyperclip 模块将文件绝对路径放入剪切板中,再通过win32api和win32con进行Ctrl+V 和ENTER按钮的按下、松开操作上传路径:
#非input上传文件方法之pywin32
import win32api,win32con
import time
import pyperclip
#filePath: 要上传的文件地址,绝对路径。例如:E:\xxx\小写格式.mp4
def Upload_File(filePath):
#将文件路径放入剪切板
pyperclip.copy(filePath)
time.sleep(2)
# 发送Ctrl(17)+V(86)按钮
win32api.keybd_event(17,0,0,0)
win32api.keybd_event(86,0,0,0)
#松开按键
win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)
time.sleep(1)
# 输入回车键(13),第一次确认路径,第二次提交路径
win32api.keybd_event(13,0,0,0)
win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0) #松开按键
win32api.keybd_event(13,0,0,0)
win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0) # 松开按键
time.sleep(2)
# 调用方法上传视频
webDriver.find_element(By.ID,'pickfiles').click() #点击上传视频按钮的button,调起弹窗
Upload_File('E:\xxx\小写格式.mp4')
以上方法亲测有效,同时借鉴了博客:python + selenium input和非input 标签的文件上传操作_西伯利哇的博客-优快云博客
并经过部分优化后完成。
还有autoIT、SendKeys库、keybd_event 等方法后续学会了之后再更新,算是自己的一个学习日记吧~ 拜拜
本文介绍了如何使用Selenium框架在input和非input元素下上传文件,包括通过`send_keys`方法处理input类型,以及利用pywin32和pyperclip实现非input元素的键盘模拟上传。适合对文件上传操作有需求的开发者参考。
205

被折叠的 条评论
为什么被折叠?



