0

我正在尝试通过 TestComplete 中的桌面快捷方式启动应用程序。我需要验证应用程序是否启动成功,如果没有我想知道失败的原因。

Testcomplete 有助于使用 Win32API 库调用一些 Windows API。因此,为了通过 exe 启动应用程序,我使用的是 Win32API.WinExec() 方法。根据WinExec的返回值,我会知道是否有任何问题。但 WinExec 不能与 .lnk 文件/快捷方式一起使用。一种替代方法是不将 .lnk 文件作为 WinExec 的第一个参数,我可以给 cmd /c xyz.lnk 它始终返回 true,即使 .lnk 文件不存在,因为它在 cmd.exe 上验证成功或不是。但是有更好的解决方案来验证这个场景吗?

顺便说一句,我在 Testcomplete 中使用 JScript。

4

1 回答 1

1

我已经根据这个如何进入创建了以下脚本: http ://www.smartbear.com/support/viewarticle/8967/

这是示例:

// One possible approach
function Test()
{
  var strShortcut = "D:\\Notepad.lnk";

  // Run the shortcut
  Sys.OleObject("WScript.Shell").Run(strShortcut);

  // Get the executable file name
  var targetFileName = GetShortcutTaget(strShortcut);
  if ("" == targetFileName)
  {
    Runner.Halt("The target file does not exist");
  }

  // Try to find a process with the executable name used in the shortcut
  var foundProc = Sys.FindChild("Path", targetFileName)

  // Process the result
  if (foundProc.Exists)
    Log.Message("The applicated started successfully: " + targetFileName);
  else
    Log.Warning("The applicated did not start: " + targetFileName);
}

function GetShortcutTaget(shortcutFileName)
{
  var WshShell = new ActiveXObject("WScript.Shell");
  var fso = new ActiveXObject("Scripting.FileSystemObject");

  if (fso.FileExists(shortcutFileName)) {
    var shortcut = WshShell.CreateShortcut(shortcutFileName);
    return shortcut.TargetPath;
  }

  return "";
}
于 2011-05-08T16:11:13.903 回答