input输入框一般可以采用selenium 的sendkeys方法实现
非input输入框如何实现文件上传呢
非常简单的方法是利用桌面自动化工具AutoIt 实现
首先下载安装:https://www.autoitscript.com/site/autoit/downloads/
安装完成在开始菜单找到AutoIt v3,如图
很简单,看英文就知道他们是干啥的,从上到下依次是
帮助文档
窗口信息(就是捕捉窗口信息的工具)
检查升级(废话)
compile Script to .exe编译为 .exe可执行文件的工具(也是废话)
Run Script 执行AutoIt脚本
SciTE Script Editor 用于编写AutoIt 脚本
1.打开AutoIt Window Info
拖动鼠标到输入框和打开按钮,注意观察class title Instance 这几个值
2.打开SciTE Script Editor
粘贴如下代码
;ControlFocus("title","text",controlID) Edit1=Edit instance 1
ControlFocus("文件上传", "","Edit1")
; Wait 10 seconds for the Upload window to appear
WinWait("[CLASS:#32770]","",10)
; Set the File name text on the Edit field
ControlSetText("文件上传","", "Edit1",$CmdLine[1])
Sleep(2000)
; Click on the Open button
ControlClick("文件上传","","Button1");
分号开头的是注释,红色的是参数,很简单
ControlSetText("打开","", "Edit1",$CmdLine[1])
这行代码的意思就是定位到title为 "打开" class 为Edit, Instance为1 的控件上 ,输入第一个传入的参数
这里我使用了参数化的方法,将要上传的图片进行了参数化,直接传入图片地址也是可以的如
ControlSetText("打开","","Edit1","C:\Users\Administrator\Desktop\1.png")
然后保存文件
3.打开compile Script to .exe,传入刚才的.au3 脚本文件,执行编译
4.编译完成就出现了一个.exe 文件
5.有了EXE文件就简单了,首先把.exe文件加到你的项目中,这里我是Java项目
然后用Java调用.exe 文件就行了,记得传入参数
//先使用selenium 的click 点击元素来弹出Windows上传文件的输入框
Thread.sleep(1000);
this.license_img.click();//这license_img 是WebElement
log.info("上传图片");
String[] cmd = {"uploadss.exe", "\img\1.png"};//这里图片传入路径,我用的相对路径,绝对路径也可以
Runtime.getRuntime().exec(cmd);//Java中执行exe的方法
Thread.sleep(5000);
OK,大功告成,把这些加入你的自动化项目试试吧,还有别的方法吗
那当然了,其实差不多了,有另外一款桌面自动化工具可供使用,是国内测试大牛开发的Windows桌面自动化工具SuperPatrick,使用方法和AutoIt差不多。
附上地址,里面有各种语言的使用教程,非常详细 ,希望大家多多评论,点赞,打赏