UI自动化页面需要选择上传文件
UI自动化页面上传文件,百度查的时候说有4中方法,简便的方法是安装SendKeys,但是百度说这个只支持python2.7的
我的python版本是3.7的,目前还只碰到了非<input type="file"...>的情况,所以用pywin32模块,等遇到其他情况再补充
前提:安装pywin32:pip install pywin32
解析:# 文件上传框,定位工具Winspy
# 上传窗口 dialog(win32gui.FindWindo) 一级
# 子窗口:打开按钮 button (win32gui.FindWindowEx) 四级
# 子窗口 ComboBoxEx32 (win32gui.FindWindowEx) 二级
# 子窗口 ComboBox (win32gui.FindWindowEx) 三级
# 子窗口:文件路径输入框 edit(win32gui.FindWindowEx) 四级
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import win32con,win32gui
driver=webdriver.Chrome()
driver.get('http://xxx')
步骤1:先定位到页面上的上传按钮,比如我的页面是“选择头像”
tmp0='#uploadUserImgAddr'
e1=driver.find_element_by_css_selector(tmp0)
ActionChains(driver).move_to_element(el).click().perform()
ActionChains(driver).release()
time.sleep(5) #等待时间只是为了看效果
步骤2:下面一段代码可以直接照搬,只需要修改下面的2个地方即可
dialog = win32gui.FindWindow("#32770", "打开") # 一级窗口 ‘打开窗口’ #修改1:打开的浏览器:Chrome是"打开",FireFox是"文件上传",ie是"选择要加载的文件"
ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None) # 二级
ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, "ComboBox", None) # 三级
edit = win32gui.FindWindowEx(ComboBox, 0, "Edit", None) # 四级
button = win32gui.FindWindowEx(dialog, 0, "Button", None) # 四级
# 往文件名编辑框中输入文件路径
# 上传操作
win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, r'E:\文件\测试图片\bug图片\人头像\人头像\1.jpg') #修改2:上传的文件路径
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 点击打开按钮
time.sleep(10) #这里加等待时间是因为头像上传的时候会很慢,不加的话继续运行下面的脚本时就会报错,加个缓冲时间
UI自动化页面需要选择上传文件的更多相关文章
- WebUploader 上传插件结合bootstrap的模态框使用时选择上传文件按钮无效问题的解决方法
由于种种原因(工作忙,要锻炼健身,要看书,要学习其他兴趣爱好,谈恋爱等),博客已经好久没有更新,为这个内心一直感觉很愧疚,今天开始决定继续更新博客,每周至少一篇,最多不限篇幅. 今天说一下,下午在工作 ...
- form+iframe+file 页面无刷新上传文件并获取返回值
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- ASP.NET使用FileUpload上传文件
前台代码: <asp:FileUpload ID="fuKeleyi" runat="server" /> <asp:Button ID=&q ...
- 实现简单的django上传文件
本文用django实现上传文件并保存到指定路径下,没有使用forms和models,步骤如下: 1.在模板中使用form表单,因为这个表单使用于上传文件的,所以method属性必须设置为post,而且 ...
- 基于jQuery的ajax系列之用FormData实现页面无刷新上传
接着上一篇ajax系列之用jQuery的ajax方法向服务器发出get和post请求写,这篇主要写如何利用ajax和FormData实现页面无刷新的文件上传效果,主要用到了jQuery的ajax()方 ...
- 一个用于上传文件的servlet
1.jsp页面操作文件: <%@ page language="java" import="java.util.*" pageEncoding=" ...
- 三 : spring-uploadify上传文件
一 : applicationContext.xml中:必须声明不然获取不到<!-- 上传文件的配置 --> <bean id="multipartResolver&quo ...
- 原生Servlet 上传文件
依赖jar <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons ...
- FTP与HTTP上传文件的对比
许多站点,比如facebook或一些博客等都允许用户上传或下载文件,比如论坛或博客系统的图片. 在这种情况下,通常有两种选择上传文件到服务器,那就是FTP协议和HTTP协议. 以下列出了一些两者的不同 ...
随机推荐
- Azure认知服务之表格识别器
认知服务 Azure 认知服务的目标是帮助开发人员创建可以看.听.说.理解甚至开始推理的应用程序. Azure 认知服务中的服务目录可分为五大主要支柱类别:视觉.语音.语言.Web 搜索和决策.开发人 ...
- golang 设计模式
前言 不做文字的搬运工,多做灵感性记录 这是平时学习总结的地方,用做知识库 平时看到其他文章的相关知识,也会增加到这里 随着学习深入,会进行知识拆分和汇总,所以文章会随时更新 参考的文章过多.很杂很乱 ...
- JDK1.8源码学习-String-hashCode方法为什么选择数字31作为乘子
1. 背景 某天,我在写代码的时候,无意中点开了 String hashCode 方法.然后大致看了一下 hashCode 的实现,发现并不是很复杂.但是我从源码中发现了一个奇怪的数字,也就是本文的主 ...
- 免费验证码接收网站&不停开小号方法
手机号注册:免费验证码接收网站 0.http://getfreesmsnumber.com/ 9个外国网站,访问后要快点点击链接,否则2秒会检测出adblocker 1.http://smsrecei ...
- SpringMVC关于拦截器的使用
这个是基于之前的视图定位进行的. @ 目录 拦截器类:IndexInterceptor 配置拦截器 修改 index.jsp 效果 拦截器类:IndexInterceptor package inte ...
- Redis 持久化 rdb、Aof对比
一.Redis 简介: Redis是一个开源的.基于内存的数据结构存储器,可以用作数据库.缓存和消息中间件. Redis是一个key-value存储系统.和Memcached类似,它支持存储的valu ...
- Java实现树形结构的数据转Json格式
在项目中难免会用到树形结构,毕竟这是一种常用的组织架构.楼主这里整理了两个实现的版本,可以直接拿来使用,非常方便. 楼主没有单独建项目,直接在以前的一个Demo上实现的.第一种,看下面代码: pack ...
- 个人项目wordcount
1.Github项目地址:https://github.com/inimble/wordcount.git 2.估算耗费的时间(如右表) PSP2.1 Personal Software Proces ...
- 牛客网PAT练习场-A+B和C
签到题 .题目地址:https://www.nowcoder.com/pat/6/problem/4077 #include<iostream> #include<cstdio> ...
- 7. Jackson用树模型处理JSON是必备技能,不信你看
每棵大树,都曾只是一粒种子.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BA ...