【WebDriver】使用AutoIt上传文件

  【WebDriver】使用AutoIt上传文件

   在用webdriver做自动化测试时,有时会遇到上传本地文件的情况,但是webdriver只能操作web页面,对选择文件对话框的操作就可以使用AutoIt来实现。


一、AutoIt用于Windows GUI(图形化界面)中进行自动化操作。

官方网站:https://www.autoitscript.com/site/

下载AutoIt并安装,安装完成在开始菜单中如下图:

【WebDriver】使用AutoIt上传文件_第1张图片

其中:

AutoIt Windows Info   用于识别Windows控件信息

Compile Script to.exe  用于将AutoIt生成 exe 执行文件

Run Script    用于执行AutoIt脚本

SciTE Script Editor   用于编写AutoIt脚本


二、准备测试的html页面,代码如下,保存为uploadFile.html。





upload_file


  

upload_file





浏览器打开后如下图:

【WebDriver】使用AutoIt上传文件_第2张图片


三、用AutoIt实现uploadFile.html上传文件弹出窗口的操作,生成.exe文件。

1、点击uploadFile.html页面的浏览按钮,弹出选择文件对话框

【WebDriver】使用AutoIt上传文件_第3张图片


2、打开AutoIt Windows Info 工具,点击Finder Tool下小风扇形状图标,按住鼠标左键拖动到需要识别的控件上。

AutoIt Windows Info识别“文件名”输入框控件
【WebDriver】使用AutoIt上传文件_第4张图片


AutoIt Windows Info识别“打开”按钮控件
【WebDriver】使用AutoIt上传文件_第5张图片


通过上面两个图AutoIt Windows Info中Control页面 获得以下信息。

窗口的title为“文件上传”,标题的Class为“#32770”。

文件名输入框的class 为“Edit”,Instance为“1” ,ClassnameNN为“Edit1”。

打开按钮的class 为“Button”,Instance为“1” ,ClassnameNN为“Button1”。


3、打开SciTE Script Editor编辑器,编写脚本。

SciTE Script Editor编辑器如下图:

【WebDriver】使用AutoIt上传文件_第6张图片

代码如下:

;ControlFocus()方法用于识别Window窗口
ControlFocus("文件上传", "","Edit1")


; WinWait()设置10秒钟用于等待窗口的显示
  WinWait("[CLASS:#32770]","",10)


; ControlSetText()用于向“文件名”输入框内输入本地文件的路径,如果是在桌面第三个参数直接写文件名

  ControlSetText("文件上传", "", "Edit1", "代账客户批量导入模板 .xls")

  Sleep(1000)

; ControlClick()用于点击上传窗口中的“打开”按钮

  ControlClick("文件上传", "","Button1");

4、将脚本保存为uploadFile.au3,然后保持uploadFile.html的上传文件窗口处于打开状态,再通过通过Run Script 工具将uploadFile.au3打开运行

【WebDriver】使用AutoIt上传文件_第7张图片


5、打开Compile Script to.exe工具,将ploadFile.au3生成为exe可执行文件:

【WebDriver】使用AutoIt上传文件_第8张图片

                    点击“Convert”按钮将其生成为upfile.exe程序


四、通过自动化测试脚本调用upfile.exe程序实现上传,Java代码如下:

import org.openqa.selenium.firefox.FirefoxDriver;

/*
 *作者:灵枢
 *时间:2017-2-14  下午7:45:35
 *描述:使用AutoIt上传文件
 **/
public class UploadFile {
	public static void main(String[] args) {
		FirefoxDriver driver = new FirefoxDriver();
		driver.get("file:///C:/Users/Administrator/Desktop/uploadFile.html");
		//点击“浏览”
		driver.findElementByName("file").click();
		
		Runtime rn = Runtime.getRuntime();
		try {
			String str = "E://uploadFile.exe";
			rn.exec(str);
		} catch (Exception e) {
			System.out.println("Error to run the exe");
		}
	}
}

注:参考虫师博客http://www.cnblogs.com/fnng/p/4188162.html



你可能感兴趣的:(自动化测试,自动化测试)