如何通过TestComplete中的快捷方式验证应用程序是否成功启动?

时间:2011-04-26 18:58:33

标签: javascript testcomplete

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

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

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

1 个答案:

答案 0 :(得分: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 "";
}