#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 "";
}