如何从UFT向命令行传递输出参数供后续命令使用?
实现UFT测试结果传递到命令行下一个命令
要实现从UFT输出数字并传递给命令行的下一个命令,核心思路是通过临时文件作为中间介质传递数据——UFT把结果写入文件,启动UFT的VBS脚本读取文件内容并输出到命令行,最后用批处理捕获这个输出并传给下一个命令。下面是具体步骤和代码实现:
1. 在UFT测试中写入结果到临时文件
在你的UFT测试脚本的末尾(确保测试执行完成后才执行),添加代码将需要输出的数字写入一个临时文本文件:
' 替换为你实际生成的结果数字 Dim outputNumber outputNumber = 456 ' 这里可以是UFT测试中计算得到的任何数字 ' 创建文件系统对象,写入结果到临时文件 Dim fso, outputFile Set fso = CreateObject("Scripting.FileSystemObject") ' 注意:请确保该路径有读写权限,也可以自定义路径 Set outputFile = fso.CreateTextFile("C:\temp\UFT_Result.txt", True) ' True表示覆盖已有文件 outputFile.WriteLine(outputNumber) outputFile.Close ' 释放对象 Set outputFile = Nothing Set fso = Nothing
2. 修改VBS脚本,执行UFT测试并读取结果
完善你现有的VBS脚本,在UFT测试执行完成后读取临时文件的内容,并将结果输出到命令行:
Dim qtApp, qtTest Set qtApp = CreateObject("QuickTest.Application") ' 启动UFT并打开测试 qtApp.Launch qtApp.Visible = True qtApp.Open "C:\Your\UFT\Test\Path", False ' False表示非只读模式 ' 传递命令行参数到UFT环境变量(你的原有代码) qtApp.Test.Environment.Value("First_Argument") = WScript.Arguments.Item(0) qtApp.Test.Environment.Value("Second_Argument") = WScript.Arguments.Item(1) ' 执行UFT测试 qtApp.Test.Run ' 测试完成后读取结果文件 Dim fso, inputFile, resultNumber Set fso = CreateObject("Scripting.FileSystemObject") Set inputFile = fso.OpenTextFile("C:\temp\UFT_Result.txt", 1) ' 1表示只读模式 resultNumber = inputFile.ReadLine inputFile.Close ' 将结果输出到命令行(关键:让批处理能捕获这个输出) WScript.Echo resultNumber ' 关闭UFT(根据你的需求选择是否执行) qtApp.Test.Close qtApp.Quit ' 释放对象 Set inputFile = Nothing Set fso = Nothing Set qtTest = Nothing Set qtApp = Nothing
3. 用批处理串联命令,捕获UFT结果并传递给下一个命令
创建一个批处理文件(比如Run_UFT_Chain.bat),用它来执行VBS脚本,捕获输出结果,然后传递给下一个命令:
@echo off REM 确保临时文件路径存在 if not exist "C:\temp" mkdir "C:\temp" REM 执行VBS脚本,用cscript避免弹出窗口,捕获输出结果 for /f "delims=" %%a in ('cscript //nologo "C:\Path\To\Your\UFT_Script.vbs" "FirstArgValue" "SecondArgValue"') do set UFT_OUTPUT=%%a REM 查看捕获的结果(可选) echo UFT测试输出的数字是: %UFT_OUTPUT% REM 将结果传递给下一个命令,示例如下: REM your_next_command.exe %UFT_OUTPUT% REM 比如用echo模拟下一个命令: echo 下一个命令接收到的参数是: %UFT_OUTPUT%
关键注意事项
- 权限问题:确保UFT和VBS脚本对临时文件路径有读写权限,避免写入/读取失败。
- 脚本执行顺序:UFT的结果写入代码必须放在测试的最后执行,确保测试完成后才生成结果文件。
- 使用cscript:执行VBS时必须用
cscript而不是wscript,因为wscript会弹出GUI对话框,无法在命令行捕获输出。
内容的提问来源于stack exchange,提问作者rakesh kumar




