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中的字典来处理索引统计的方法
May 05 Python
Python中Django发送带图片和附件的邮件
Mar 31 Python
python pandas修改列属性的方法详解
Jun 09 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
Jan 22 Python
Python3.5装饰器典型案例分析
Apr 30 Python
Python 单例设计模式用法实例分析
Sep 23 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
Sep 24 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
python库matplotlib绘制坐标图
Oct 18 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
Nov 15 Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 Python
Python中pass的作用与使用教程
Nov 13 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的变量总结 新手推荐
2011/04/18 PHP
解析PHP中ob_start()函数的用法
2013/06/24 PHP
php导入导出excel实例
2013/10/25 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
2013/11/22 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
js实现AI五子棋人机大战
2020/05/28 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
python获取地震信息 微信实时推送
2019/06/18 Python
使用Python实现批量ping操作方法
2020/05/06 Python
Django中FilePathField字段的用法
2020/05/21 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
金士达面试非笔试
2012/03/14 面试题
党员个人剖析材料
2014/09/30 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
学会感恩主题班会
2015/08/12 职场文书
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers