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实现图像几何变换
Jul 06 Python
Python中list列表的一些进阶使用方法介绍
Aug 15 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
Jul 01 Python
python django使用haystack:全文检索的框架(实例讲解)
Sep 27 Python
Python Tkinter 简单登录界面的实现
Jun 14 Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
Aug 07 Python
python 多进程队列数据处理详解
Dec 23 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
May 22 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 Python
Python制作简单的剪刀石头布游戏
Dec 10 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
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
Laravel框架实现的批量删除功能示例
2019/01/16 PHP
PDO::_construct讲解
2019/01/27 PHP
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
概述VUE2.0不可忽视的很多变化
2016/09/25 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
小程序页面动态配置实现方法
2019/02/05 Javascript
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
Puppeteer使用示例详解
2019/06/20 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
Python中os模块功能与用法详解
2020/02/26 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
python批量修改文件名的示例
2020/09/27 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
环法自行车赛官方商店:Le Tour de France
2017/08/27 全球购物
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
介绍一下JMS编程步骤
2015/09/22 面试题
Delphi工程师笔试题
2013/09/21 面试题
土木工程实习生自我鉴定
2013/09/19 职场文书
网络工程专业自荐信范文
2014/03/16 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书
举起手来观后感
2015/06/09 职场文书
导游词之桂林
2019/08/20 职场文书