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 相关文章推荐
Python随机生成数据后插入到PostgreSQL
Jul 28 Python
Python更新数据库脚本两种方法及对比介绍
Jul 27 Python
Python3.5.3下配置opencv3.2.0的操作方法
Apr 02 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
Jul 02 Python
python 实现图片旋转 上下左右 180度旋转的示例
Jan 24 Python
Python Pandas中根据列的值选取多行数据
Jul 08 Python
python cumsum函数的具体使用
Jul 29 Python
python被修饰的函数消失问题解决(基于wraps函数)
Nov 04 Python
pytorch 图像中的数据预处理和批标准化实例
Jan 15 Python
Python中常用的高阶函数实例详解
Feb 21 Python
Python作用域与名字空间原理详解
Mar 21 Python
Python Numpy之linspace用法说明
Apr 17 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
模仿OSO的论坛(一)
2006/10/09 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
js几个验证函数代码
2010/03/25 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
scrapy爬虫实例分享
2017/12/28 Python
python 删除非空文件夹的实例
2018/04/26 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
python对于requests的封装方法详解
2019/01/03 Python
Python3.5常见内置方法参数用法实例详解
2019/04/29 Python
python 获取等间隔的数组实例
2019/07/04 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
Ajax的优点和缺点
2014/11/21 面试题
如何掌握自荐信格式呢
2013/11/19 职场文书
审计主管岗位职责
2014/01/31 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
初中班主任教育随笔
2015/08/15 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python
Python使用pyecharts控件绘制图表
2022/06/05 Python
Android实现图片九宫格
2022/06/28 Java/Android