java 自动化 web 自动化之文件上传

背景

在做web自动化时,我们经常会碰到一些场景需要进行文件上传,而文件上传打开的窗口属于windows空格,通过Selenium是操作不了的,此篇文章给大家介绍几种实现方法

方法一:sendKeys

前提条件: 文件上传元素是input标签,并且type为file才可以使用此种方法

以我在本地的fileupload.html文件为例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传示例</title>
</head>
<body>
    <input type="file" id="fu" value="选择文件">
</body>
</html>

测试代码如下:

ChromeDriver driver = new ChromeDriver();
driver.get("D:\\fileupload.html");
Thread.sleep(2000);
driver.findElement(By.id("fu")).sendKeys("D:\\java_auto\\test.png");

此方法的核心在于元素是input类型,可以借由sendKeys方法去输入上传文件的路径即可

方法二:AutoIT

针对不是input类型的元素,我们可以使用第三方的自动化工具,比如:Auto,对windows控件元素进行操作

以下是其官网介绍:

AutoIt v3 is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting. It uses a combination of simulated keystrokes, mouse movement and window/control manipulation in order to automate tasks in a way not possible or reliable with other languages (e.g. VBScript and SendKeys).

翻译过来就是:

AutoIT是类似于Basic脚本语言的免费软件,利用它我们可以实现对windows的GUI界面进行自动化操作,balabala...

官网地址:https://www.autoitscript.com/site/autoit/

强烈建议先去看官方文档:https://www.autoitscript.com/autoit3/docs/,对工具的使用和脚本编写语法描述的非常详细

step1:下载安装

下载页面在这里:https://www.autoitscript.com/site/autoit/downloads/

点击下载即可,下载完无脑下一步直到安装完毕

安装完毕会有如下几个应用:

 

其中我们用得到的有:

  • AutoIT Window Info 识别Windows元素信息
  • Complie Script to .exe 将AutoIT编写的脚本编译成exe可执行文件
  • Run Script 运行AutoIT脚本
  • SciTE Script Editor 编写AutoIT脚本

注意:官方推荐使用X86版本,这样兼容性问题会少些

step2:使用AutoIT

1、将上传的Windows窗口打开 2、打开AutoIT Window Info 工具,Finder Tool下的图标一直按住,选择窗口中要识别的元素(文件名后面的输入框以及打开按钮),分别记录下此时的Tile、Class等信息

3、打开SciTE Script Editor,开始进行脚本编写(注意元素的定位是由Class和Instance进行拼接的,如Class为Edit,Instance为1,那么定位表达式为Edit1)

;等待“打开”窗口
WinWaitActive("打开")
;休眠2秒
Sleep(2000)
;在输入框中写入上传文件的路径
ControlSetText("打开", "", "Edit1", "d:\java_auto\test.png")
;休眠2秒
Sleep(2000)
;点击打开按钮
ControlClick("打开", "","Button1");

4、选择工具栏上面的 Tools-Go 先去运行下脚本,试运行OK之后将脚本保存,后缀为au3
5、选择Complie Script to .exe工具把脚本编译为exe文件
6、Java代码本地执行exe文件

ChromeDriver driver = new ChromeDriver();
driver.get("D:\\fileupload.html");
Thread.sleep(2000);
driver.findElement(By.id("fu")).click();
//Java运行时对象
Runtime runtime = Runtime.getRuntime();
try {
    //执行
    runtime.exec("D:\\upload.exe");
}catch (IOException e){
    e.printStackTrace();
}

来看看运行效果

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【100%免费无套路】 

å¨è¿éæå¥å¾çæè¿°

 全套资料获取方式:点击下方小卡片自行领取即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值