Как проверить, успешно или нет запущено приложение с помощью ярлыка в TestComplete?

#javascript #testcomplete

#javascript #testcomplete

Вопрос:

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

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

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

Комментарии:

1. Вам действительно нужно запускать приложение с помощью ярлыка? Как насчет использования TestedApps вместо этого? Это должно быть проще.

Ответ №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 "";
}