Selenium3自动化测试【29】文件上传

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

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

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>

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

作者的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.png

AutoIt方式上传

关于非input标签的文件上传,可借助AutoIt。
AutoIt目前版本是v3.3.14.*,AutoIt是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。
下载安装Autoit。
进入https://www.autoitscript.com/site/autoit/downloads,在该页面中找到下载区域,单击下载安装,如图所示。
3.png
Autoit 下载完毕后的文件为autoit-v3-setup.exe,下载后进行安装,win10系统上运行安装时,会给出提示信息,单击【运行】按钮,进行安装即可,如图所示。
4.png

安装过程中,会检测到操做系统是64位,此时可以选择【use native x64…】。
5.png
Autoit 主要应用其中的三个功能

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

以本节提供的Autoit.html页面为例,页面展现效果如图所示。
6.png
7.png
通过Autoit实现上传文件步骤:

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

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

Basic Window Info
Title:打开
Class:#32770

Basic Control info
Class:Edit
  Instance:1

鼠标单击Finder Tool,拖动小风扇图标到【打开】按钮控件,如图所示。
9.png
可到编辑框的信息如下:

Basic Window Info
Title:打开
Class:# 32770

Basic Control info
Class:Button
  Instance:1

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

;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,如图所示。
11.png
编写自动化脚本,调用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://edu.csdn.net/course/detail/29953)
【测试全系列视频课程】请点击我哦…
(https://edu.csdn.net/agency/59)
学习路线如下
微信图片_20210816100905.png微信图片_202108161009051.png微信图片_202108161009052.png
图书京东、当当有售
京东: https://item.jd.com/12784287.html
当当: http://product.dangdang.com/29177828.html
0.9733767060093851.png
【如有测试学习路线上的疑问,可加WX:Leo-890】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leo_Eagle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值