python+selenium+autoit实现文件上传功能


Posted in Python onAugust 23, 2017

问题

在做web端ui层自动化的时候会碰到文件上传的操作,经常有朋友问到,这里总结一下

解决方案

第一种:type=file的上传文件,类似如下的

python+selenium+autoit实现文件上传功能

使用类似这样的代码就可以完成:

driver.find_element('name','file').send_keys('./小强测试品牌.png')

第二种:就是第一种除外的,实现起来较为麻烦,这里用到了autoit,大致步骤如下:

1、下载并安装autoit,之后在开始菜单可以看到如下

python+selenium+autoit实现文件上传功能

AutoIt Windows Info 用于识别Windows控件信息

Compile Script to.exe 用于将AutoIt生成 exe 执行文件

Run Script 用于执行AutoIt脚本

SciTE Script Editor 用于编写AutoIt脚本

2、上传功能如下

python+selenium+autoit实现文件上传功能

3、识别元素,主要是上图中的文件名输入框和打开按钮,使用AutoIt Windows Info完成,记录结果如下:

文件名输入框的class 为“Edit”,Instance为“1”

打开按钮的class 为“Button”,Instance为“1”

4、编写脚本,使用SciTE Script Editor,内容如下:

ControlFocus("文件上传", "","Edit1")
WinWait("[CLASS:#32770]","",10)
ControlSetText("文件上传", "", "Edit1","D:python_workspaceQiangSEAutopic小强测试品牌.jpg")
Sleep(2000)
ControlClick("文件上传", "","Button1");

上述代码中特别需要注意“文件上传”字样是你点击上传按钮之后弹出的对话框的title,可能每个系统会不一样

5、验证脚本

保证页面的上传对话框打开,然后运行脚本tools>go

6、打开Compile Script to.exe工具,将其生成为exe可执行文件

python+selenium+autoit实现文件上传功能

7、python脚本中调用

up=self.driver.find_element('class name','avatar-uploader-trigger')
up.find_element('class name','ant-btn').click()
os.system('D:\python_workspace\QiangSEAuto\upload.exe')
time.sleep(20)

其他

其实还有其他的解决方法,感兴趣的自行研究吧,比如还可以利用如下的方式:

Python pywin32库,识别对话框句柄,进而操作

SendKeys 库

keybd_event 模拟按键

总结

以上所述是小编给大家介绍的python+selenium+autoit实现文件上传,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
使用PyCharm配合部署Python的Django框架的配置纪实
Nov 19 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
Feb 26 Python
python实现基于信息增益的决策树归纳
Dec 18 Python
python将txt文件读取为字典的示例
Dec 22 Python
flask session组件的使用示例
Dec 25 Python
5款Python程序员高频使用开发工具推荐
Apr 10 Python
python简单鼠标自动点击某区域的实例
Jun 25 Python
使用python 写一个静态服务(实战)
Jun 28 Python
python写入文件自动换行问题的方法
Jul 05 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
让Django的BooleanField支持字符串形式的输入方式
May 20 Python
基于K.image_data_format() == 'channels_first' 的理解
Jun 29 Python
Django与JS交互的示例代码
Aug 23 #Python
python paramiko模块学习分享
Aug 23 #Python
定制FileField中的上传文件名称实例
Aug 23 #Python
基于python元祖与字典与集合的粗浅认识
Aug 23 #Python
Python 多线程Threading初学教程
Aug 22 #Python
Python3实现抓取javascript动态生成的html网页功能示例
Aug 22 #Python
Python实现公历(阳历)转农历(阴历)的方法示例
Aug 22 #Python
You might like
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
php接口数据加密、解密、验证签名
2015/03/12 PHP
PHP对象的浅复制与深复制的实例详解
2017/10/26 PHP
php提高脚本性能的4个技巧
2020/08/18 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
js继承的实现代码
2010/08/05 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
JavaScript之class继承_动力节点Java学院整理
2017/07/03 Javascript
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
2017/12/18 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
实战node静态文件服务器的示例代码
2018/03/08 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
python编程实现希尔排序
2017/04/13 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
Myprotein瑞士官方网站:运动营养和健身网上商店
2019/09/25 全球购物
高中运动会入场词
2014/02/14 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
2015学校年度工作总结
2015/05/11 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
总结Python常用的魔法方法
2021/05/25 Python
JS函数式编程实现XDM一
2022/06/16 Javascript