基于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单线程实现多个定时器示例
Mar 30 Python
在Python中使用成员运算符的示例
May 13 Python
python中__slots__用法实例
Jun 04 Python
Python单链表简单实现代码
Apr 27 Python
Python序列操作之进阶篇
Dec 08 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
python从内存地址上加载python对象过程详解
Jan 08 Python
为什么说python适合写爬虫
Jun 11 Python
python如何实现word批量转HTML
Sep 30 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
python从ftp获取文件并下载到本地
Dec 05 Python
只用40行Python代码就能写出pdf转word小工具
May 31 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命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
php获取远程文件大小
2015/10/20 PHP
PHP中仿制 ecshop验证码实例
2017/01/06 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
ie 调试javascript的工具
2009/04/29 Javascript
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python实现队列的方法
2015/05/26 Python
django2 快速安装指南分享
2018/01/05 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
python ddt实现数据驱动
2018/03/14 Python
分析python请求数据
2018/08/19 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
通过代码实例了解Python sys模块
2020/09/14 Python
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
英国在线花园中心:You Garden
2018/06/03 全球购物
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
捐书活动总结
2014/05/04 职场文书
抗震救灾标语
2014/06/26 职场文书
冰峪沟导游词
2015/02/09 职场文书
销售开票员岗位职责
2015/04/15 职场文书