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 06 Python
Python安装第三方库的3种方法
Jun 21 Python
Python 探针的实现原理
Apr 23 Python
Python通过Pygame绘制移动的矩形实例代码
Jan 03 Python
Python sorted函数详解(高级篇)
Sep 18 Python
python实现自动获取IP并发送到邮箱
Dec 26 Python
python 微信好友特征数据分析及可视化
Jan 07 Python
Django基于客户端下载文件实现方法
Apr 21 Python
python不到50行代码完成了多张excel合并的实现示例
May 28 Python
python 实现逻辑回归
Dec 30 Python
Python上下文管理器Content Manager
Jun 26 Python
python实现层次聚类的方法
Nov 01 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
探讨Hessian在PHP中的使用分析
2013/06/13 PHP
如何使用php判断所处服务器操作系统的类型
2013/06/20 PHP
PDO::setAttribute讲解
2019/01/29 PHP
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
python插入排序算法实例分析
2015/07/03 Python
Python解析树及树的遍历
2016/02/03 Python
win10系统中安装scrapy-1.1
2016/07/03 Python
python 连接sqlite及简单操作
2017/06/30 Python
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
pytorch简介
2020/11/11 Python
如何利用find命令查找文件
2016/11/18 面试题
会计毕业生自荐信
2013/11/21 职场文书
高二学生评语大全
2014/04/25 职场文书
批评与自我批评范文
2014/10/15 职场文书
出国签证在职证明范本
2014/11/24 职场文书
你知道Java Spring的两种事务吗
2022/03/16 Java/Android
拙作再改《我的收音机情缘》
2022/04/05 无线电