python+selenium 上传文件方法

本文介绍了如何使用Selenium框架在input和非input元素下上传文件,包括通过`send_keys`方法处理input类型,以及利用pywin32和pyperclip实现非input元素的键盘模拟上传。适合对文件上传操作有需求的开发者参考。

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 等方法后续学会了之后再更新,算是自己的一个学习日记吧~ 拜拜 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值