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 相关文章推荐
50行代码实现贪吃蛇(具体思路及代码)
Apr 27 Python
python使用urllib2模块获取gravatar头像实例
Dec 18 Python
在Python中使用全局日志时需要注意的问题
May 06 Python
python利用datetime模块计算时间差
Aug 04 Python
总结python实现父类调用两种方法的不同
Jan 15 Python
Python实现中文数字转换为阿拉伯数字的方法示例
May 26 Python
Pandas Shift函数的基础入门学习笔记
Nov 16 Python
使用python进行广告点击率的预测的实现
Jul 04 Python
python网络爬虫 Scrapy中selenium用法详解
Sep 28 Python
利用python对excel中一列的时间数据更改格式操作
Jul 14 Python
Python word文本自动化操作实现方法解析
Nov 05 Python
Python Unittest原理及基本使用方法
Nov 06 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 addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
jquery 插件学习(三)
2012/08/06 Javascript
JS中 用户登录系统的解决办法
2013/04/15 Javascript
jquery+css实现动感的图片切换效果
2015/11/25 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
2017/08/23 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
python+django加载静态网页模板解析
2017/12/12 Python
python 构造三维全零数组的方法
2018/11/12 Python
在Pycharm terminal中字体大小设置的方法
2019/01/16 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
Python如何获取文件指定行的内容
2020/05/27 Python
南威尔士家居商店:Leekes
2016/10/25 全球购物
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
超市促销活动方案
2014/03/05 职场文书
个人授权委托书范本
2014/04/03 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
MySQL限制查询和数据排序介绍
2022/03/25 MySQL
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP
Java获取字符串编码格式实现思路
2022/09/23 Java/Android