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使用Queue在多个子进程间交换数据的方法
Apr 18 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 Python
Python温度转换实例分析
Jan 17 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
pyqt5使用按钮进行界面的跳转方法
Jun 19 Python
详解PyCharm安装MicroPython插件的教程
Jun 24 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
python3实现微型的web服务器
Sep 03 Python
在notepad++中实现直接运行python代码
Dec 18 Python
Python修改列表值问题解决方案
Mar 06 Python
Python非单向递归函数如何返回全部结果
Dec 18 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 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的FTP学习(四)
2006/10/09 PHP
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
PHP学习笔记(一) 简单了解PHP
2014/08/04 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
解决vue-loader加载不上的问题
2020/10/21 Javascript
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
Python的装饰器用法学习笔记
2016/06/24 Python
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
Python模块搜索路径代码详解
2018/01/29 Python
python删除某个字符
2018/03/19 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
关于赌博的检讨书
2014/01/08 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
关爱老人标语
2014/06/21 职场文书
个人授权委托书样本
2014/09/13 职场文书
购房协议书范本
2014/10/02 职场文书
社区党员干部承诺书
2015/05/04 职场文书
结婚当天新郎保证书
2015/05/08 职场文书