日常在访问页面时,文件上传与下载操作也常常用到,因此在Web自动化测试中也会遇到文件上传的情况。针对上传功能,WebDriver并没有提供对应的方法。针对上传文件的场景主要有两种解决思路:


同步视频知识与系列知识内容,可关注:【公众号】:柒哥测试;【WX】:Lee-890;


  • 如果上传按钮是input标签,只要定位上传按钮,可优先尝试send_keys() 输入文件路径;
  • 如果实际情况要打开系统的window窗口,选择本地文件进行添加,则可尝试借助AutoIt实现。

1. Send_keys()方式上传

设计uploadfile.html页面,页面代码如下:

<html>
<body>
<div >
<form name="form1" action="fileUpload.PHP" method="post" enctype="multipart/form-data">
<label for="file">File:</label>
<input type="file" name="file" id="file" />
<br />
<input type="hidden" name="multi" value="false"/>
<input type="submit" name="submit" value="Submit Single" />
</form>
</div>
</body>
</html>

页面展现效果,如图所示。

作者的D盘下,存放有一个命名为Image.png的图片,要在uploadfile.html页面上传该图片,代码如下:

from selenium import webdriver
from time import sleep driver = webdriver.Firefox()
driver.get("file:///D:/uploadfile.html")
driver.find_element_by_xpath("//input[@name='file']").send_keys("d:\\Image.png")
sleep(2)
driver.quit()

运行代码,可观察到,uploadfile.html页面中上传了Image.png文件,如图所示。

2. AutoIt方式上传

关于非input标签的文件上传,可借助AutoIt。

AutoIt目前版本是v3.3.14.*,AutoIt是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。

下载安装Autoit。

进入https://www.autoitscript.com/site/autoit/downloads,在该页面中找到下载区域,单击下载安装,如图所示。



Autoit 下载完毕后的文件为autoit-v3-setup.exe,下载后进行安装,win10系统上运行安装时,会给出提示信息,单击【运行】按钮,进行安装即可,如图所示。



安装过程中,会检测到操做系统是64位,此时可以选择【use native x64…】。



Autoit 主要应用其中的三个功能

  • Auto It Windows Info 元素定位器,用于帮助识Windows控件信息
  • SciTE Script Editor 编辑器,用于编写AutoIt脚本
  • Compile Script to.exe 用于将AutoIt生成 exe 执行文件

以本节提供的Autoit.html页面为例,页面展现效果如图所示。



通过Autoit实现上传文件步骤:

  • 通过单击上传按钮弹出windows选择文件弹出框,
  • 拖拽Autoit的Finder Tool 图标到文件名输入框。

2.1 打开Autoit.html页

首先打开AutoIt Windows Info 工具,鼠标单击Finder Tool,当鼠标变成一个小风扇形状的图标后,按住鼠标左键不要松开,拖动小风扇图标到需要识别的控件【文件编辑框】上,如图所示。

可到编辑框的信息如下:

Basic Window Info
Title:打开
Class:#32770 Basic Control info
Class:Edit
Instance:1

鼠标单击Finder Tool,拖动小风扇图标到【打开】按钮控件,如图所示。

可到编辑框的信息如下:

Basic Window Info
Title:打开
Class:# 32770 Basic Control info
Class:Button
Instance:1

根据AutoIt Windows Info 所识别到的控件信息打开SciTE Script Editor编辑器,编写脚本,如图所示。

脚本内容。

;ControlFocus("title","text",controlID) Edit1=Edit instance 1
WinActivate("打开")
ControlFocus("打开", "","Edit1") ; Wait 10 seconds for the Upload window to appear
WinWait("[CLASS:#32770]","",10) ; Set the File name text on the Edit field ControlSetText("打开", "", "Edit1", "D:\Image.png") Sleep(2000) ; Click on the Open button ControlClick("打开", "","Button1");

代码解释:

  • WinActivate():是聚焦到活动窗口;
  • ControlFocus():用于识别Window窗口;
  • WinWait():设置10秒钟用于等待窗口的显示;
  • ControlSetText():用于向“文件名”输入框内输入本地文件的路径;
  • Sleep():Sleep(2000)表示固定休眠2000毫秒,以毫秒为单位;
  • ControlClick():用于单击上传窗口中的“打开”按钮。

    当AutoIt的脚本写好后,保存到D:\ AutoitScript.au3。

    不要关闭Autoit.html页面,通过SciTE Script Editor编辑器菜单栏“Tools”-->“Go” 来运行一个脚本,可以观察到能够打开window窗口,然后加载Image.png图片。

打开Compile Script to.exe工具,将前面保存的AutoitScript.au3脚本文件生成为exe可执行文件D:\ AutoitScript.exe,如图所示。



编写自动化脚本,调用D:\ AutoitScript.exe实现Autoit.html文件上传。

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys
import os driver = webdriver.Firefox()
driver.implicitly_wait(60)
# driver = webdriver.Firefox()
driver.get("file:///D:/Auit.html")
sleep(6)
driver.find_element_by_xpath("//*[@id='rt_rt_1e282o8sm1b521dccvg1m3o1mpv1']/label").click()
os.system("D:\\AutoitScript.exe")

如果你觉的文章读的不过瘾,可以查看详细的视频教程。

【2021】UI自动化测试:Selenium3自动化测试

https://ke.qq.com/course/3172187?tuin=9c43f38e

【测试全系列视频课程】请点击我哦.....

《全栈测试系列视频》课程

地址:https://ke.qq.com/course/2525707?tuin=9c43f38e

图书京东、当当有售

京东:https://item.jd.com/12784287.html

当当:http://product.dangdang.com/29177828.html)!


同步视频知识与系列知识内容,可关注:【公众号】:柒哥测试;【WX】:Lee-890


Selenium3自动化测试【29】文件上传的更多相关文章

  1. AutoIt实现Webdriver自动化测试文件上传

    在运用WebDriver进行自动化测试时,由于WebDriver自身的限制,对于上传文件时Windows弹出的文件选择窗口无法控制,通过在网上查找资料锁定使用AutoIt来控制文件上传窗口. Auto ...

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

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

  3. 自动化测试基础篇--Selenium文件上传send_keys

    摘自https://www.cnblogs.com/sanzangTst/p/8358165.html 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一 ...

  4. python接口自动化测试二十三:文件上传

    # 以禅道为例: 一.创建一个类,类里面写一个登录方法: import requestsclass LoginZentao(): def __init__(self, s): # 初始化 self.s ...

  5. (29)Spring boot 文件上传(多文件上传)【从零开始学Spring Boot】

    文件上传主要分以下几个步骤: (1)新建maven java project: (2)在pom.xml加入相应依赖: (3)新建一个表单页面(这里使用thymleaf); (4)编写controlle ...

  6. python接口自动化测试——简单的文件上传代码实现,人人网登陆后上传图片举例

    import requests '''人人网登陆,图片上传 '''def loginData(): '''登录请求参数''' data = { 'email': '13484545195', 'ico ...

  7. 【java+selenium3】自动化处理文件上传 (十三)

    一.文件上传 文件上传是自动化中棘手的部分,目前selenium并没有提供上传的实现api,所以知道借助外力来完成,如AutoIt.sikuli. AutoIt , 这是一个使用类似BASIC脚本语言 ...

  8. selenium实现文件上传方法汇总(AutoIt、win32GUI、sengkeys)---基于python

    在使用selenium进行UI自动化测试时,经常会遇到一个关于本地文件上传的问题,解决此问题一般分两种情况: 1. 元素标签为input 2.非input型上传 下面我们分别对着两种情况进行实例分析 ...

  9. java web学习总结(二十四) -------------------Servlet文件上传和下载的实现

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

随机推荐

  1. 项目可以怎么规范Git commit ?

    通常情况下,commit message应该清晰明了,说明本次提交的目的,具体做了什么操作.但是在日常开发中,大家的commit message都比较随意,中英文混合使用的情况有时候很常见,这就导致后 ...

  2. K8S原来如此简单(八)ServiceAccount+RBAC

    ServiceAccount ServiceAccount是给运行在Pod的程序使用的身份认证,Pod容器的进程需要访问API Server时用的就是ServiceAccount账户. Service ...

  3. XML技术的作用?

    XML技术用于数据存储.信息配置.数据交换三方面. 可以将数据存储在XML中,通过节点.元素内容.属性标示数据内容及关系. 可以使用XML很方便的做信息配置,软件的各种配置参数和对象关系都存贮在XML ...

  4. Dubbo telnet 命令能做什么?

    dubbo 服务发布之后,我们可以利用 telnet 命令进行调试.管理. Dubbo2.0.5 以上版本服务提供端口支持 telnet 命令 连接服务 telnet localhost 20880 ...

  5. SQLAlchemy 使用教程

    前戏: ​ 不用怀疑,你肯定用过Django中的orm,这个orm框架是django框架中自己封装的,在Django中配置和使用较为简单,但是并不适用于其他web框架,而今天说的sqlalchemy是 ...

  6. freemarker与vue使用图片路径获取问题,可双单引号一起使用则可

    <el-table :data="leftPage.datas" style="width: 100%"  @selection-change=" ...

  7. java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?重写跟重载的区别?

    java中的方法重载发生在同一个类里面两个或者多个方法的方法名相同但是参数不同的情况.与此相对,方法覆盖是说子类重新定义了父类的方法.方法覆盖必须有相同的方法名,参数列表和返回类型. 覆盖者可能不会限 ...

  8. 断言工具类之"判断条件不为空"

    1 Assert.notNull(query, AssertConstants.NOT_NULL_MSG);

  9. VC 下如何正确的创建及管理项目

    讲解 VC 下如何正确的创建及管理项目 本文讲解 Visual C++ 的项目文件组成,以及如何正确的创建及管理项目. 本文所设计的内容是初学者必须要掌握的.不能正确的管理项目,就不能进一步写有规模的 ...

  10. 用纯CSS美化radio和checkbox

    Radio和checkbox需要美化吗?答案是必须的,因为设计风格一直都会变化,原生的样式百年不变肯定满足不了需求. 先看看纯CSS美化过后的radio和checkbox效果:查看. 项目地址:mag ...