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 相关文章推荐
pandas创建新Dataframe并添加多行的实例
Apr 08 Python
Python+OpenCV目标跟踪实现基本的运动检测
Jul 10 Python
python opencv实现切变换 不裁减图片
Jul 26 Python
python 判断矩阵中每行非零个数的方法
Jan 26 Python
Python2与Python3的区别实例分析
Apr 11 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
利用python Selenium实现自动登陆京东签到领金币功能
Oct 31 Python
python的json中方法及jsonpath模块用法分析
Dec 06 Python
Django Admin 上传文件到七牛云的示例代码
Jun 20 Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 Python
python 实现aes256加密
Nov 27 Python
windows系统Tensorflow2.x简单安装记录(图文)
Jan 18 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
使用eAccelerator加密PHP程序
2008/10/03 PHP
PHP 采集程序原理分析篇
2010/03/05 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
javascript Prototype 对象扩展
2009/05/15 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
2012/01/04 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
js实现星星海特效的示例
2020/09/28 Javascript
Python函数嵌套实例
2014/09/23 Python
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
Python如何实现机器人聊天
2020/09/10 Python
几款好用的python工具库(小结)
2020/10/20 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
详解HTML5表单新增属性
2016/12/21 HTML / CSS
HTML5进度条特效
2014/12/18 HTML / CSS
销售高级职员求职信
2013/10/29 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
交心谈心活动总结
2015/05/11 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书