在UI测试时,经常碰到上传文件功能,一般情况下可采用两种方法进行模拟,第一种普通上传,即直接传文件路径;第二种插件上传,采用AutoIt方法。
1)普通上传文件
普通的上传是将本地文件的路径传到input标签中,所以可以直接使用send_keys()来实现
#上传文件的html代码
<tr>
<td align="right">上传文件:</td>
<td>
<input class="inputBg" type="file" size="45" name="message_img">
</td>
</tr>
#先定位到该上传文件按钮,然后使用send_keys传图片路径,实现上传功能
driver.find_element_by_name("message_img").send_keys(“D:\\11\\a.webp”)
该种方法实现比较简单,一般适用于通过input标签实现的上传,看作一个输入框,将上传文件路径传给程序。但有些上传如果采用JavaScript或Ajax等技术实现的上传,该种方法不适用,此时一般采用AutoIt工具上传
2)AutoIt工具上传文件
安装AutoIt工具:https://www.autoitscript.com/site/
AutoIt工具安装完后,会有三个程序,分别如下:
AutoIt Windows Info:用于识别Windows控件的信息
SciTE Script Editor:用于编写AutoIt脚本
Compile Script to.exe:用于将AutoIt生成exe执行文件
具体操作如下:
第一步、识别Windows控件的信息(AutoIt Windows Info)
主要识别两个信息,一个是文件名输入框,另一个是打开按钮
第二步、编写AutoIt脚本(SciTE Script Editor)
;进行聚焦,识别Windows窗口
ControlFocus("[Class:#32770]","","Edit1")
;等待
WinWait("[Class:#32770]","",5)
#文件名输入框输入上传文件路径
ControlSetText("[Class:#32770]","","Edit1","D:\11\a.webp")
Sleep(2000)
#点击打开按钮
ControlClick("[Class:#32770]","","Button1")
备注:第一个参数使用控件的titile进行定位,但经常无法定位到,建议使用Class
第三步、生成exe执行文件(Compile Script to.exe)
保存后,点击Tools—Go—生成exe文件
第四步、执行生成的exe文件进行文件上传,在python脚本中添加下面代码,让脚本执行exe文件上传程序
import os
#点击“选择文件”按钮,弹出上传框
driver.find_element_by_name("message_img").click()
#选择上传文件,进行上传
os.system("D:\\11\\test3.exe")