autoit 处理Flash控件上传文件问题
上一篇 /
下一篇 2013-01-22 15:14:22
/ 个人分类:TestNG
现在越来越多的上传控件采用了flash上传的文件的控件,传统的自动化工具很难对其进行
自动化测试。
今天刚好碰到这样的问题,在Q群众提问才发现有
autoIt这样一个工具。
学习了下具体的实现方式。在这里记录分享下。。。
首先当然是下载安装了
http://www.autoitscript.com/site/autoit/downloads/
然后打开脚本编辑器SciTE Script. Editor,下面是我的代码:
Dim $flag
$flag=True
If Not WinActive("XXX的个人官网 -
Google Chrome","") Then WinActivate("XXX的个人官网 - Google Chrome","")
MouseMove(820,830)
MouseDown("left")
MouseUp("left")
While $flag
WinWait("选择要上载的文件,通过:idkin.com","","2")
If Not WinActive("选择要上载的文件,通过: idkin.com","") ThenWinActivate("选择要上载的文件,通过: idkin.com","")
Send($CmdLine[1])
Sleep(2000)
Send("!o")
$flag=False
WEnd
$CmdLine变量表示传入的参数,无需定义,直接使用即可
$CmdLine[0]表示参数的个数
$CmdLine[1]表示第一个参数。。依次类推。
由于我们网站的特殊性,即点击上传图片的控件都是在Flash中生成的,无法定位,所以用到了MouseMove(),MouseDown();MouseUp()方法。
有些可能点击上传图片按钮后,弹出的还不是“选择要上载的文件,通过:idkin.com‘样式的文件选择框,而是直接”打开“样式的文件选择框,此时这里就需要改动了。
WinWait("打开","","2")
参数含义:
title | The title of the window to check. SeeTitle special definition. |
text | [optional]The text of the window to check. |
timeout | [optional]Timeout in seconds |
选择图片后的点击打开(或保存)的代码段:
Send("!o")这个也可能要改成 Send("!s")具体情况而定。
然后编辑代码成.exe文件即可
下面代码是在JAVA中执行:
传入要上传文件的地址
public void sendImg(String imgurl){
long time1 = System.currentTimeMillis();
System.out.println("开始上传图片。。。。。");
try {
Runtime.getRuntime().exec(".\\lib\\send2.exe "+imgurl).waitFor();
long time2 = System.currentTimeMillis();
System.out.println((time2 - time1) + "毫秒。");
} catch (Exception e) {
e.printStackTrace();
}
}
执行即可!
收藏
举报
TAG:
autoit
Autoit
AutoIT
autoIT
webdriver
WebDriver