文件下载与上传也是Web自动化测试中经常需要处理的,相比AutoIT一般的测试工具似乎处理的效果都不太理想。下面从脚本入手,看看AutoIT是如何处理文件下载的。
While 1
$var=WinList()
(这段脚本的作用是,获取当前正在运行的窗口列表,根据列表来找到相应的窗口)
WinWaitActive("文件下载","")
(以我的博客为例,进入
http://www.51testing.com/index.php?uid-194902-action-viewspace-itemid-248642点击下载附件,会弹出将要处理的提示框
)
If WinExists("文件下载") Then
ControlGetFocus("文件下载")
ControlFocus ( "文件下载", "", "" )
ControlFocus ( "文件下载", "保存(&S)", "[class:Button;instance:2]")
Sleep(2000)
ControlClick ( "文件下载", "保存(&S)", "[class:Button;instance:2]","left",1)
WinWaitActive("另存为")
ControlGetFocus("另存为")
ControlFocus ("另存为", "", "" )
$text=IniRead ( "config.ini", "ToolConfig", "Config.ini", "test" )
(这里是读取配置文件,从中获取保存文件时,对文件命名的新名称)
ControlSend("另存为","","[class:Edit;instance:1]",@DesktopDir&"\"&$text)
Sleep(2000)
ControlFocus ("另存为", "保存(&S)", "[class:Button;instance:2]")
ControlClick ("另存为", "保存(&S)", "[CLASS:Button; INSTANCE:2]" )
Sleep(2000)
$var=WinList("另存为")
If $var[0][0]>1 Then
WinWaitActive("另存为")
ControlGetFocus("另存为")
ControlFocus ("另存为", "", "" )
ControlFocus ("另存为", "是(&Y)", "[class:Button;instance:1]")
ControlClick ("另存为", "是(&Y)", "[CLASS:Button; INSTANCE:1]" )
EndIf
ExitLoop
EndIf
(这段脚本的作用是关闭保存文件时,当文件已经存在的情况下,出现的提示框。)
Wend
执行这段脚本之后,上面截图中显示的那个文件保存框就会被处理。现在已经将这段脚本编译成了exe,可下载附件进行测试。先进入上面提到的链接,再启动这个exe,点击附件下载,当弹出文件保存框的时候,等待一下观察保存框是否被关闭。
注意:AutoIT编写的exe,一些杀毒软件经常误报为病毒(鄙视360),如果提示存在木马,点击添加信任再执行即可。如果不放心,可以自行编译附件中的au3脚本。
FileSaver.zip(281 KB)