Selenium中级 | Selenium借助AutoIt完成文件的上传

2020-09-21 13:58发布

有时候我们在Web系统中点击了某个按钮之后,也会弹出Windows的窗口,最常见的就是文件的上传。

我们知道Selenium是专门针对Web系统的测试工具,它自身是无法操作windows窗口的,这个时候就可以借助第三方的小工具AutoIt来实现对文件的上传与下载。

AutoIt是一个开源的小工具,它可以用来做一些Windows GUI的自动化,可以模拟鼠标和键盘操作。

本篇文章来介绍下Selenium如何借助AutoIT来实现文件的上传。

整体的思路是:

1. 先下载安装AutoIt工具组

2. 使用Selenium脚本点击“文件上传”的按钮,调出Windows窗口

3. 把控制权交给AutoIt,即使用如下语句调用AutoIt的脚本

Runtime.getRuntime().exec("D:/AutoItScripts/upload.exe");

注:AutoIt的脚本要用AutoIt工具组件中的sciTE Script Editor来编辑,之后要转化为exe文件,供selenium调用

      在后面步骤中会具体讲解。

4. 在Selenium中正常执行文件上传后的后续步骤。

具体步骤如下:

1. 下载安装AutoIt

     请参见:AutoIT的下载与安装

2. 准备AutoIt操控Windows窗口的脚本

2.1 打开AutoIT工具组件中的脚本编辑器sciTE Script Editor

2.2 在编辑器中输入如下类似语句

WinWaitActive("文件上传")Send("D:\UploadFiles\1.docx")Sleep(2000)Send("{ENTER}")

把上面的脚本保存为扩展名为au3的文件,上例中保存的文件为upload.au3

2.3 脚本解释

WinWaitActive("文件上传")

该命令用于激活通过selenium点击上传按钮打开的Windows窗口

所传的参数为打开的Windows窗口名:文件上传

注:如果默认语言设置的是英文的话,窗口名称在火狐中会变成:File Upload

另外Chrome中的窗口名称也会和火狐有些不同,大家记得传自己打开窗口的具体名称即可。

Send("D:\UploadFiles\1.docx")

使用Send命令指定上传的具体文件

Send命令的参数需要是所上传文件的全路径,上例中为存放在D盘UploadFiles文件夹下的1.docx文档

Sleep(2000)

AutoIT脚本执行暂停2秒

注:单位是毫秒,对于上传文件过大需要一定时间的需要加一个合适的暂停时间

Send("{ENTER}")Send("{ENTER}")

使用Send命令发送键盘回车(Enter)操作,相当于点击Windows窗口中的“打开”按钮

注:如果你的输入法默认是中文的,则需要像上例中一样写两行Send("{ENTER}"),第一行确认你的输入,第二行相当于点击“打开”按钮,如果是英文的输入法,则只需要一行即可。

2.4 将保存的AutoIT脚本转为化Selenium可以调用的exe文件

在上面的步骤中我们已经完成了upload.au3的编辑及保存,现在需要把au3的文件转化为exe的文件

转化很简单,只需要选中upload.au3,在右键菜单中选择Compile File即可,点击后即会生成upload.exe的文件

至此,我们已经把AutoIt部分的工作都做完了。

3. 在Selenium中通过一个简单的语句调用上面的upload.exe文件就可以了

//调用autoIt exe文件Runtime.getRuntime().exec("D:\\upload.exe");

传的参数为upload.exe文件在电脑中的全路径,通过此语句Selenium把控制权交给了AutoIt

这样就完成了在Selenium中借助AutoIt进行文件的上传,下载也是类似的操作。

下面是一个Selenium脚本的一个大概示例:

	public static void main(String[] args) throws InterruptedException, IOException	{		//定义Gecko driver的获取地址		System.setProperty("webdriver.gecko.driver", "D:\\BrowserDriver\\geckodriver.exe");//启动火狐浏览器(默认安装)		WebDriver driver = new FirefoxDriver();//打开你的网址		driver.get(URL);//点击文件上传的按钮		WebElement element = driver.findElement(By.name("file"));		element.click();//调用 autoit exe file		Runtime.getRuntime().exec("D:\\upload.exe");	}	

完成。


文章来源:CSDN 作者:YOYO测试

来源地址:https://blog.csdn.net/yoyocat915/article/details/81105905