——————·今天距2021年还有321天·——————

这是ITester软件测试小栈第96次推文

进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等。

在selenium中,文件上传可以分为两种场景:

  • input标签:这种可以用selenium提供的send_keys()方法轻松解决;

  • 非input标签:实现起来比较困难,可以借助第三方库pypiwin32。

input标签上传文件

input标签,可以直接调用send_keys时输入文件路径。

首先,写一个input标签的上传文件小demo:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>上传文件</title>
</head>
<body><input type="file" name="my_file">
</body>
</html>

浏览器打开效果如下:

接着使用send_keys()上传文件:

from selenium import webdriverdriver = webdriver.Chrome()
# input标签的html文件
driver.get('http://localhost:63342/ui_autotest/upload.html')
file_ele = driver.find_element_by_name('my_file')
# 上传本地图片
file_ele.send_keys(r"C:\Users\96984\Pictures\Camera Roll\小猪佩奇.gif")

非input标签上传文件

这种上传方式需要借助第三方工具,主要有以下三种情况:

1.AutoIt 去调用它生成的au3或者exe格式的文件;

2.SendKeys第三方库;

3.Python的pywin32库,通过识别对话框句柄来进行操作;

以下介绍通过pywin32进行操作。

环境安装:

①安装pypiwin32, 使用命令 pip install pypiwin32

②下载WinSpy包,解压后,双击可执行文件即可(微信公众号后台回复:WinSpy领取)。

WinSpy使用介绍:

①打开一个可以上传文件的网址,比如 https://smallpdf.com/cn/jpg-to-pdf

②点击选择文件,会出现一个上传文件的弹窗

③打开安装好的WinSpy,选中按钮拖拽到文件名的输入框中,WinSpy会对应出现相关信息

4.选择WinSpy底部按钮Tree, 查看弹窗按钮的层级关系

通过代码实现上传文件

import win32gui
import time
import win32con
from selenium import webdriverdriver = webdriver.Chrome()
driver.get('https://smallpdf.com/cn/jpg-to-pdf')
driver.maximize_window()
# 找到选择文件元素
file_ele = driver.find_element_by_css_selector('span.l0v3m7-7')
file_ele.click()time.sleep(2)
# #32770--对话框名字,即最外层整个弹窗
dialog = win32gui.FindWindow('#32770', '打开')
ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None)
ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None)
Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None)
# 上面三行代码依次寻找对象,直到找到文件名输入框Edit对象的句柄# 找到打开按钮
button = win32gui.FindWindowEx(dialog, 0, 'Button', None)
time.sleep(3)
# 发送本地文件
win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, r'C:\Users\96984\Pictures\Camera Roll\小猪佩奇.gif')
time.sleep(3)
# 点击打开按钮
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
time.sleep(3)

如果想批量上传文件呢,修改发送本地文件的代码如下:

win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, r'"C:\Users\96984\Pictures\Camera Roll\小猪佩奇.gif" "C:\Users\96984\Pictures\Camera Roll\u=3263232804,1739019004&fm=26&gp=0.jpg"')

运行后,上传文件效果如下所示:

最后是今天的分享:WinSpy安装包

ITester软件测试小栈今日分享

分享内容

WinSpy安装包

领取方式

微信公众号后台回复:WinSpy

有图有真相

以上

That‘s all

更多系列文章

敬请期待

ITester软件测试小栈

往期内容宠幸

叮—这有一打让你666的测试终极资料包,请查收!

打开PyCharm永久激活的这两个锦囊,再也不用担心写代码的时候让我付费了!

QQ空间面试题放送,速度教科书式扑街补救offer!

金九银十加薪季,测试题预热一波。

测试面试题集-测试基础理论

测试面试题集-测试用例设计:登录、购物车、QQ收藏表情、转账、充值、提现

测试面试题集-生活物品测试:杯子、伞、钢笔、桌子

Selenium系列文章汇总

Fiddler基本使用

Fiddler抓包介绍

速看,APP测试之ADB最全指南!

APP测试之Monkey压力测试(一)

APP测试之Monkey压力测试(二)

Python接口自动化-接口基础(一)

Python接口自动化-接口基础(二)

快来星标 置顶 关注我

后台 回复资源取干货

回复答题挑战参与答题

ITester软件测试小栈

软件测试技术分享栈

功能测试|自动化测试|专项测试|测试开发

想要获取相关资料和软件 ?

测试交流Q群:727998947

左右滑动添加coco或vivi 微信

Selenium自动化测试-文件上传相关推荐

  1. Selenium的文件上传和操作Cookie等方法_Sinno_Song_新浪博客

    一.文件上传 通过input标签实现的上传功能,可以将其看作是一个输入框,即通过send_keys()指定本地文件路径的方式实现文件上传. 示例:driver.find_element_by_name ...

  2. selenium autoit java_Selenium怎么优化AutoIT文件上传?

    Selenium优化文件上传 Selenium的文件上传是有缺陷的,只能支持Input标签上传.这是Selenium的硬伤,但是我们想到了用AutoIT的方式解决了这个问题.但是autoIT使用起来太 ...

  3. selenium+python自动化测试系列(二):AutoIt工具实现本地文件上传

    AutoIt使用简单说明 AutoIt的安装这里就不在啰嗦,可以参考AutoIt安装或者自行搜索解决. 第一步:定位上传文件路径的文本框 这里举例说明,如何定位?如图 这里我们看到上传文件的类型是bu ...

  4. python selenium 下载文件_Python Selenium —— 文件上传、下载,其实很简单

    很多selenium学习者被浏览器弹出的文件上传.下载框折磨的痛不欲生,今天博主就带你们轻松搞定上传和下载问题. 上传 上传弹框 文件上传是所有UI自动化测试都要面对的一个头疼问题,要处理这个问题,我 ...

  5. Selenium系列教程 - 文件上传

    主要内容 一.通过send_keys方法(该方法只适用于input标签) 二.通过AutoIt来处理上传文件(适用所有) 三.其他方法 四.多文件上传 在Web UI自动化测试中可能会遇到文件上传的场 ...

  6. python selenium 文件上传_Python+Selenium学习--上传文件

    场景 文件上传操作也比较常见功能之一,上传功能操作webdriver 并没有提供对应的方法,关键上传文件的思路. 上传过程一般要打开一个系统的window 窗口,从窗口选择本地文件添加.所以,一般会卡 ...

  7. Selenium3自动化测试——12.上传文件功能

    1. 实现目标 自动实现功能:将本地文件上传至表单中,通过input标签,通过form表单提交给服务器. 2. 实现代码 网页代码如下: <html> <head><me ...

  8. python selenium 文件上传_python+selenium 文件上传

    前言 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决: 另外一种 ...

  9. selenium 文件上传

    selenium文件上传 通过input标签实现的上传功能,可将其看做是一个输入框,通过send_key()实现文件上传. 创建一个test.html文件: <html> <head ...

最新文章

  1. Oracle的ONS创建,Oracle 10gR2 RAC Clusterware ONS服务的管理
  2. c语言socket句柄函数传递,通过源码解析 Node.js 中进程间通信中的 socket 句柄传递...
  3. PyCharm安装开发游戏的Pygame
  4. 运行php程序cpu 100%,php 应用 cpu 100% 调试方法
  5. /bin/sh^M:损坏的解释器: 没有那个文件或目录
  6. iOS开发中的富文本
  7. linux个人游戏服务器搭建,linux游戏服务器搭建(一)
  8. three.js中正交和透视投影相机的应用
  9. 「详解」torch.nn.Fold和torch.nn.Unfold操作
  10. mysql脏数据_mysql的刷脏
  11. vcftools手册重要参数集合
  12. TiddlyWiki笔记入门之多维度标签--发散思维与收敛思维的乐园。
  13. C++ 学生信息管理程序练习
  14. 计算机病毒及其治疗的教案,计算机病毒教案(公开课)原创配套
  15. 设置网页视频播放倍速
  16. java中手机号码的正则校验
  17. 用平面图片制作3D模型【3DsMax】
  18. 高分子材料老化的内外因、性能评价与预防措施
  19. 关于数据分析的一些实例报告
  20. 嵌入式方面名词术语总结

热门文章

  1. Apache Zookeeper 集群环境搭建
  2. linux c++编译问题和虚拟机网络通信
  3. java读取百万条记录出错_如何实现导出百万条数据到EXCEL中不报OOM异常?
  4. oracle以10个记录为一页查询,SQL查询前10条记录(SqlServermysqloracle)语法分析
  5. js 经常用到的键盘码
  6. 从Nest到Nesk -- 模块化Node框架的实践
  7. 快看这个机器人,在使用双截棍!| 附正经paper
  8. cron计划任务、权限和归属 、 使用LDAP认证 、 家目录漫游
  9. 封装算法: 模板方法(Template Method)模式
  10. EasyUI ComboBox应用示例