您的位置:首页 > 产品设计 > UI/UE

使用AutoIt实现UI自动化上传附件

2016-12-20 18:37 267 查看
1、下载AutoIt,https://www.autoitscript.com/site/autoit/downloads/(这个地址下载下来的不好使的话,自行搜索下载,CSDN上有很多)

2、找到安装后的文件路径,打开autoit窗口信息工具

3、点击要上传图片的按钮,打开文件选择框,注意,一定要打开windows的文件选择框

4、将控件探测工具分别拖至选择图片窗口的文件名输入框以及打开按钮处,记录需要的类等信息





5、打开autoit的sci te编辑脚本,输入;另存为au3文件

WinActivate("打开");

;ControlFocus("title","text",controlID) Edit1=Edit instance 1

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", "C:\Users\Administrator\Desktop\1.jpg")

Sleep(2000)

; Click on the Open button

ControlClick("打开", "","Button1");

参数化的写法:

WinWaitActive($CmdLine[1])

WinActive($CmdLine[1])

ControlSetText($CmdLine[1],"","[CLASS:Edit;INSTANCE:1]",$CmdLine[2])

ControlClick($CmdLine[1],"","[CLASS:Button;INSTANCE:1]")

Send("!o")

附注:

ControlFocus ( "title", "窗口文本", controlID) 设置输入焦点到指定窗口的某个控件上;
WinWait ( "title题" , "窗口文本"
, 超时时间 ) 暂停脚本的执行直至指定窗口存在(出现)为止;
ControlSetText ( "title", "窗口文本", controlID,
"新文本" ) 修改指定控件的文本;
Sleep ( 延迟 ) 使脚本暂停指定时间段;
ControlClick ( "title", "窗口文本", 控件ID
, 按钮 , 点击次数 ) 向指定控件发送鼠标点击命令;

其中,title即AutoIt Window Info识别出的Title字段,controlID即AutoIt
Window Info识别出的Class和Instance的拼接,如上图拼接后的结果应为:Button1;

6、验证脚本是否正确,点击页面的上传图片按钮,打开上传图片对话框;切换到sci te编辑脚本窗口,点击工具菜单----执行脚本,注意观察下面的日志,执行完毕后查看页面是否已经上传好图片



7、打开auit编译脚本工具,打开上一步保存的au3文件,转换成exe文件



8、selenium中调用exe程序

Runtime r = Runtime.getRuntime();
//因为工程文件放在了C盘下,直接访问res文件夹下的exe文件会拒绝访问,暂时改成电脑E盘下的可执行文件调用
String scriptFile = "E:/test.exe";
@SuppressWarnings("unused")
Process pro = null;
try {
pro = r.exec(scriptFile);
browserEmulator.pause(15000);
} catch (IOException e) {
e.printStackTrace();

}


参数化写法的调用:

Runtime r = Runtime.getRuntime();
String scriptFile = "./res/AutoItScript/upload.exe";
@SuppressWarnings("unused")
Process pro = null;
try {
pro = r.exec(scriptFile+" "+windowsTitle+" "+fileNameWithPath);
logger.info("upload file:" + fileNameWithPath);;
} catch (IOException e) {
e.printStackTrace();
logger.error("Run uploadfile.exe fail");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: