欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-02 14:06:10
...

有时候我们在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}")

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

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

2.3 脚本解释

WinWaitActive("文件上传")

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

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

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

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

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

 

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的文件

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

至此,我们已经把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");
	}	

​

完成。

 

****************************************************************************************************

最近我会持续更新Selenium Java的相关文章,也请大家多多关注我的视频课程

Selenium3 Java自动化测试完整教程

*****************************************************************************************************