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 相关文章推荐
使用go和python递归删除.ds store文件的方法
Jan 22 Python
详解Python中for循环的使用方法
May 14 Python
在Python中操作时间之tzset()方法的使用教程
May 22 Python
python 性能优化方法小结
Mar 31 Python
python常见排序算法基础教程
Apr 13 Python
MySQL适配器PyMySQL详解
Sep 20 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
Python爬虫之正则表达式基本用法实例分析
Aug 08 Python
Linux下python3.6.1环境配置教程
Sep 26 Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 Python
python如何实时获取tcpdump输出
Sep 16 Python
用python实现一个简单计算器(完整DEMO)
Oct 14 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
提升PHP速度全攻略
2006/10/09 PHP
关于php连接mssql:pdo odbc sql server
2011/07/20 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
List the Codec Files on a Computer
2007/06/18 Javascript
JavaScript入门教程 Cookies
2009/01/31 Javascript
dwr spring的集成实现代码
2009/03/22 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
JS实现拼图游戏
2021/01/29 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
浅谈tensorflow 中tf.concat()的使用
2020/02/07 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
python模块如何查看
2020/06/16 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
Skyscanner新西兰:全球领先的旅游搜索网站
2019/08/26 全球购物
ORACLE第二个十问
2013/12/14 面试题
竞选班委演讲稿
2014/04/28 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
大学生村官入党自传
2015/06/26 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
Python编写nmap扫描工具
2021/07/21 Python
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL