Как проверить, успешно ли запущено приложение или нет с помощью ярлыка в TestComplete? - PullRequest
0 голосов
/ 26 апреля 2011

Я пытаюсь запустить приложение через ярлык на рабочем столе в TestComplete. Мне нужно проверить, успешно ли запущено приложение, если нет, то мне хотелось бы узнать причину ошибки.

Testcomplete облегчает вызов некоторых API-интерфейсов Windows с использованием библиотеки Win32API. Итак, для запуска приложения через EXE я использую метод Win32API.WinExec (). Основываясь на возвращаемом значении WinExec Я бы знал, если что-то пошло не так. Но WinExec нельзя использовать с файлами / ярлыками .lnk. одна альтернатива - вместо того, чтобы давать файл .lnk в качестве 1-го аргумента WinExec, я могу дать cmd / c xyz.lnk, который возвращает true все время, даже если файл .lnk не существует, потому что проверка на cmd.exe прошла успешно или не. Но есть ли лучшее решение для проверки этого сценария?

Кстати, я использую JScript в Testcomplete.

1 Ответ

1 голос
/ 08 мая 2011

Я создал приведенный ниже скрипт на основе этой инструкции: 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 "";
}
...