如何在Katalon Studio中创建通用上传关键字实现同文件多输入框上传
Katalon通用文件上传关键字实现方案
通用关键字封装
Katalon支持动态获取测试对象,你可以封装接收测试对象路径、文件路径两个入参的通用关键字,适配所有上传场景:
import com.kms.katalon.core.testobject.ObjectRepository import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI import com.kms.katalon.core.annotation.Keyword // 类名可自定义,注意对应调用时的路径 class UploadUtils { /** * 通用文件上传方法 * @param testObjectPath 测试对象在Object Repository中的完整路径 * @param filePath 待上传文件的本地绝对路径 */ @Keyword def uploadFileToTarget(String testObjectPath, String filePath) { if(testObjectPath == null || testObjectPath.trim() == "" || filePath == null || filePath.trim() == "") { throw new IllegalArgumentException("测试对象路径和文件路径不能为空") } // 动态获取测试对象执行上传 WebUI.uploadFile(ObjectRepository.findTestObject(testObjectPath), filePath) } }
关键字调用方式
基础调用
注意替换代码中的com.yourpackage为你创建自定义关键字类时实际使用的包名:
// 统一配置文件路径,仅需修改一次 def targetFilePath = "D:\\test-photo.png" // 逐个上传到不同输入框 CustomKeywords.'com.yourpackage.UploadUtils.uploadFileToTarget'('input_browse', targetFilePath) CustomKeywords.'com.yourpackage.UploadUtils.uploadFileToTarget'('Object Repository/TKM/Page_/upload_AB_log', targetFilePath) CustomKeywords.'com.yourpackage.UploadUtils.uploadFileToTarget'('Object Repository/TKM/Page_/Upload_BC_logo', targetFilePath) CustomKeywords.'com.yourpackage.UploadUtils.uploadFileToTarget'('Object Repository/TKM/Page_/upload_CD_log', targetFilePath) CustomKeywords.'com.yourpackage.UploadUtils.uploadFileToTarget'('Object Repository/TKM/Page_/upload_EF_logo', targetFilePath)
批量上传优化
如果需要上传的目标很多,可以用列表循环简化代码:
def targetFilePath = "D:\\test-photo.png" // 统一管理所有上传目标的测试对象路径 def uploadTargetList = [ 'input_browse', 'Object Repository/TKM/Page_/upload_AB_log', 'Object Repository/TKM/Page_/Upload_BC_logo', 'Object Repository/TKM/Page_/upload_CD_log', 'Object Repository/TKM/Page_/upload_EF_logo' ] // 循环执行上传 uploadTargetList.each { targetPath -> CustomKeywords.'com.yourpackage.UploadUtils.uploadFileToTarget'(targetPath, targetFilePath) }
可选扩展
如果需要适配更复杂的场景,可以直接在关键字内部补充逻辑:
- 上传前等待输入框可见、可点击
- 上传后校验文件名称是否正常显示
- 增加异常捕获和日志上报
内容的提问来源于stack exchange,提问作者Akzy
相关产品推荐
相关产品推荐

