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 返回汉字的汉语拼音
Feb 27 Python
python的正则表达式re模块的常用方法
Mar 09 Python
Python装饰器使用实例:验证参数合法性
Jun 24 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 Python
Python连接Redis的基本配置方法
Sep 13 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
python经典趣味24点游戏程序设计
Jul 26 Python
python3反转字符串的3种方法(小结)
Nov 07 Python
python 伯努利分布详解
Feb 25 Python
浅析python连接数据库的重要事项
Feb 22 Python
教你怎么用Python操作MySql数据库
May 31 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实现多服务器共享SESSION数据的方法
2007/03/16 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
2013/06/13 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
javascript Excel操作知识点
2009/04/24 Javascript
jquery 简单导航实现代码
2009/09/11 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
JS实现给对象动态添加属性的方法
2017/01/05 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
JS实现简单的表格增删
2020/01/16 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
Python实现两个list对应元素相减操作示例
2017/06/09 Python
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
PyQt5实现QLineEdit添加clicked信号的方法
2019/06/25 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
大学毕业后的十年规划
2014/01/07 职场文书
最新个人职业生涯规划书
2014/01/22 职场文书
党支部承诺书范文
2014/03/28 职场文书
图书馆志愿者活动总结
2014/06/27 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
java executor包参数处理功能 
2022/02/15 Java/Android
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python