清单 5. RFT 脚本
public void testMain(Object[] args) { String fileName = ""; if (args != null && args.length != 1) return; else { fileName = (String) args[0]; } try { // 打开测试文件 CommonTask.openFile("sample/Macro/" + fileName); //Sheet1 上的 StarMacro 按钮,根据类型 ID 进行查找 VclButton btn = new VclButton(".find:58818 326 0"); // 触发调用脚本语言 API btn.click(); // 释放资源,关闭这个测试文件 CommonTask.discardAll(); } catch (Throwable t) { // 异常处理 } // 处理 VBA 脚本生成的 Log 文本文件,放到 Log 目录下 File logDir = new File(VBAConstant.OUT_DIR); if(!logDir.exists()) logDir.mkdirs(); File newLoc = new File(VBAConstant.OUT_DIR, fileName.substring(0, fileName.lastIndexOf(".xls")) + ".log"); boolean ret = VBAUtil.copyFile(logFile, newLoc); // 根据 Log 文件,分析脚本 API 执行结果 boolean result = false; String excResult = VbaLogProcessor.analyzeLog(logFile); if (excResult.equals(VbaLogProcessor.TEST_PASS)) { result = true; } else if (excResult.equals(VbaLogProcessor.TEST_FAIL)) { result = false; } else { Logger.error("Error Occured"); } Verify.verifyTrue(tcid + " result:", result); } |
根据上文的描述和以上代码,只需要使用 RFT 根据文件路径和名称在 IBM Lotus Symphony 中打开一个 Excel 测试文件,并点击 Sheet1 中的 CommandButton:StartMacro 就可以 VBA 脚本运行。如图 6 所示
图 6. Symphoy 中打开脚本文件
StartMacro 触发的 VBA 脚本代码如下所示。