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")
参数含义:
titleThe 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

 

评分:0

我来说两句

Open Toolbar