一、上传文件框是input形式
首先定位上传按钮
发送要上传的文件
driver.findElement(By.id("XX")).sendKeys("D:\\20.jpg");
二、上传文件框不是input形式
当上传文件框不是input时,需要借助AutoIT这个工具
下载地址:https://www.autoitscript.com/site/autoit/downloads/
注意一下,安装过程中32位还是64位,安装后,在开始菜单中会显示这些:
常用的三个组件:
AutoIT Window Info(x64) :用来定位
SciTE Script Editor :用来写脚本
Compile Script to .exe(x64):用来转换成exe
下面开始定位上传框:
1、将Finder Tool拖拽到文件名处,如图:
2、记录一下如下内容:
Title=打开,ClassnameNN=Edit1,Class=#32770
注:每个浏览器打开的上传框的title不一样,需注意。
3. 再次定位打开按钮:
4、记录如下内容:
ClassnameNN=Button1
5、打开SciTE Script Editor 开始写脚本:
;ControlFocus("title" ,"text",controlID)定位到打开窗口
ControlFocus("打开","","Edit1")
;等待元素出现,时间为20s
WinWait("[CLASS:#32770]","",20)
;设置上传的文件
ControlSetText("打开","","Edit1","C:\Users\YBB\Desktop\1.png")
;点击上传按钮
ControlClick("打开","","Button1");
测试是否成功的方法:
在浏览器中测试:
点击上传文件按钮后,弹出选择文件框,运行脚本时,要保证此窗口打开状态,在SciTE Script Editor中点击Tools的GO,即可运行成功。如图:
在cmd中测试:
首先要将SciTE Script Editor中编写的脚本转换成exe文件,就需要用到Compile Script to .exe(x64),打开后如图
打开cmd,输入如下图, 双引号不要省略:
driver.findElement(By.xpath("XXXX")).click();
Runtime.getRuntime().exec("C:\\Users\\YBB\\Desktop\\upload.exe");
执行之后,上传成功!
如果遇到upload.exe不好用,重新保存一次就好了。