基于python的selenium两种文件上传操作实现详解


Posted in Python onSeptember 19, 2019

方法一、input标签上传

如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径,这里不做过多赘述,前文有相关操作方法。

方法二、非input标签上传

这种上传方式需要借助第三方工具,主要有以下三种情况:

1.AutoIt 去调用它生成的au3或者exe格式的文件

2.SendKeys第三方库(目前只支持到2.7版本)

网址:https://pypi.python.org/pypi/SendKeys/

3.Python的pywin32库,通过识别对话框句柄来进行操作

pywin32库的安装因为文件较大,建议使用豆瓣源直接pip安装:

pip install -i https://pypi.douban.com/simple pywin32

前两种在这里不考虑,只采用第三种方法即可,使用之前可以借助工具winspy来辅助定位,winspy下载地址:

https://sourceforge.net/projects/winspyex/

winspy工具的定位方法采用的是绝对路径定位,即根路径为点击上传按钮后的弹出框的整个窗口页面,一般根据Text文本值和Class属性来定位,如图所示:

基于python的selenium两种文件上传操作实现详解

根路径如图所示,它的Text文本值为“打开”,Class属性值为“#32770”。

基于python的selenium两种文件上传操作实现详解

在winspy工具左上角有个聚焦按钮,通过拖动的方式拖动到上传弹出框的对应位置(如文件路径输入框)后松开,winspy界面会显示当前定位的Text文本值(此处为空)和Class属性值(Edit),在windows的窗口下,Parent属性的值中,括号里面的就表示它上一层元素的Class属性值,可以通过点击Parent属性值跳到上一层元素,最终我们定位到文件路径输入框的Class属性路径为:Edit - combox - comboBoxEx32 - #32770。

基于python的selenium两种文件上传操作实现详解

基于python的selenium两种文件上传操作实现详解

那么同理,“打开”按钮通过同样的绝对路径方式定位,得到它的Class属性路径为:button - #32770。

基于python的selenium两种文件上传操作实现详解

通过借助winspy工具定位出了对应元素的路径,就可以通过pywin32库来实现上传操作啦!

pywin32的实现步骤为:

1、找到绝对路径输入框和“打开”按钮的元素;

2、输入绝对路径,点击打开

在页面实现的前提条件为 :windows上传窗口已经出现,可以sleep1~2秒等待上传的弹框出现。

import win32gui
import win32con
def upload(filePath, browser_type="chrome"):
 '''
 通过pywin32模块实现文件上传的操作
 :param filePath: 文件的绝对路径
 :param browser_type: 浏览器类型(默认值为chrome)
 :return:
 '''
 if browser_type == "chrome":
  title = "打开"
 else:
  title = "" # 这里根据不同浏览器类型来修改
 # 找元素
 # 一级窗口"#32770","打开"
 dialog = win32gui.FindWindow("#32770", title)
 # 向下传递
 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', "打开(&O)") # 二级
 # 输入文件的绝对路径,点击“打开”按钮
 win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, filePath) # 发送文件路径
 win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 点击打开按钮

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python with statement 进行文件操作指南
Aug 22 Python
Python中方法链的使用方法
Feb 23 Python
python实现SMTP邮件发送功能
Jun 16 Python
python 删除指定时间间隔之前的文件实例
Apr 24 Python
在Python 不同级目录之间模块的调用方法
Jan 19 Python
python关于矩阵重复赋值覆盖问题的解决方法
Jul 19 Python
解决pycharm 安装numpy失败的问题
Dec 05 Python
python中什么是面向对象
Jun 11 Python
Python依赖包迁移到断网环境操作
Jul 13 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 Python
python解析照片拍摄时间进行图片整理
Jul 23 Python
Python分割训练集和测试集的方法示例
Sep 19 #Python
python Dijkstra算法实现最短路径问题的方法
Sep 19 #Python
PHP统计代码行数的小代码
Sep 19 #Python
Python实现代码统计工具
Sep 19 #Python
python实现统计代码行数的小工具
Sep 19 #Python
python日志模块logbook使用方法
Sep 19 #Python
python统计指定目录内文件的代码行数
Sep 19 #Python
You might like
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
2017/12/15 Javascript
vue cli webpack中使用sass的方法
2018/02/24 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
js制作提示框插件
2020/12/24 Javascript
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
python用字典统计单词或汉字词个数示例
2014/04/22 Python
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
python结合API实现即时天气信息
2016/01/19 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
python面向对象法实现图书管理系统
2019/04/19 Python
python中pyplot基础图标函数整理
2020/11/10 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
直接有效的自我评价
2014/01/11 职场文书
入党自我评价范文
2014/02/02 职场文书
教师师德反思材料
2014/02/15 职场文书
财务会计岗位职责
2015/02/03 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书
AJAX实现省市县三级联动效果
2021/10/16 Javascript