我正在尝试通过TestComplete中的桌面快捷方式启动应用程序。我需要验证应用程序是否成功启动,如果不是,我想知道失败的原因。
Testcomplete有助于使用Win32API库调用某些Windows API。因此,对于通过exe启动应用程序,我使用的是Win32API.WinExec()方法。根据{{3}}的返回值,我知道是否有任何问题。但WinExec不能与.lnk文件/快捷方式一起使用。一个替代方案是,而不是将.lnk文件作为WinExec的第一个参数,我可以给cmd / c xyz.lnk,即使.lnk文件不存在也会一直返回true,因为它在cmd.exe上验证成功或者不。但有没有更好的解决方案来验证这个scenai?
顺便说一句,我在Testcomplete中使用JScript。
答案 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 "";
}