在运用WebDriver进行自动化测试时,由于WebDriver自身的限制,对于上传文件时Windows弹出的文件选择窗口无法控制,通过在网上查找资料锁定使用AutoIt来控制文件上传窗口。
AutoIt工具的使用方法:
1、下载AutoIt之后双击Au3Info.exe打开定位器,如下图:
2、打开文件选择窗口页面
3、在AutoIt的定位器页面按住Finder Tool拖到文件选择窗口的“打开”按钮上,定位按钮的相关属性
依次定位保存按钮,使用ControlFocus方法,定位编辑框(文件名)title是“另存为”,class是Edit ,instance 是1
然后使用ControlSetText方法输入保存路径,定位保存按钮,使用ControlClick方法单击保存按钮。
AutoIt的脚本如下:(将下面的脚本打成可执行文件 如:upload_x86.exe)
步骤:
1、Selenium点击打开,打开选择文件窗口
2、AutoIt在弹出另存为窗口输入指定路径,单击保存
3、使用autoIt转换为EXE格式的可执行文件,使用java的runTime类调用
Runtime.getRuntime().exec("E:\\test\\upload_x86.exe");
脚本实现:
ControlFocus("打开","","Edit1")
WinWait("[CLASS:#32770]","",3);
ControlSetText("打开","","Edit1",$CmdLine[1])
ControlClick("打开","","Button1")
java自动化文件上传代码如下:(List<String> filepath上传多个文件)
//处理上传文件窗口
public void attachmentWindowByautoIT(List<String> filepath) {
String execute_file = System.getProperty("user.dir");
execute_file+= "\\driver\\upload_x86.exe";
String cmd = "\""+execute_file+"\"";
String cmdline = "";
for(String s:filepath){
cmdline+=" \""+s+"\"";
}
cmd=cmd+" \""+cmdline+" \"";
try {
Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
}
ps:该文章于2016年2月发布在51测试上,由于各种原因现在移至博客园