我试图在我的某个测试中添加一些内容,但我无法成功。 基本上我的测试是进入桌面,双击.exe然后关闭它。 它工作正常,但我需要从快捷方式执行该.exe文件,例如我在桌面上有.exe文件的快捷方式,我想访问它。
这是我的.cs代码(部分内容),它启动了我的UI地图方法
[TestMethod]
public void LaunchPadTestMethod()
{
// To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
this.UIMap.LaunchPadOpen_Close();
}
这是我的UImap .cs方法
public partial class UIMap
{
/// <summary>
/// LaunchPadOpen_Close - Use 'LaunchPadOpen_CloseParams' to pass parameters into this method.
/// </summary>
public void LaunchPadOpen_Close()
{
#region Variable Declarations
WinButton uIExitButton = this.UILoginWindow.UIExitWindow.UIExitButton;
#endregion
// Launch '%USERPROFILE%\Desktop\financialApp\financialApp\bin\Debug\financialApp.exe'
ApplicationUnderTest uILoginWindow = ApplicationUnderTest.Launch(this.LaunchPadOpen_CloseParams.UILoginWindowExePath, this.LaunchPadOpen_CloseParams.UILoginWindowAlternateExePath);
// Click 'Exit' button
Mouse.Click(uIExitButton, new Point(39, 16));
}
public virtual LaunchPadOpen_CloseParams LaunchPadOpen_CloseParams
{
get
{
if ((this.mLaunchPadOpen_CloseParams == null))
{
this.mLaunchPadOpen_CloseParams = new LaunchPadOpen_CloseParams();
}
return this.mLaunchPadOpen_CloseParams;
}
}
private LaunchPadOpen_CloseParams mLaunchPadOpen_CloseParams;
}
/// <summary>
/// Parameters to be passed into 'LaunchPadOpen_Close'
/// </summary>
[GeneratedCode("Coded UITest Builder", "12.0.21005.1")]
public class LaunchPadOpen_CloseParams
{
public class GestCollURL
{
//------------------------------------------Class for getting current URL--------------------
public static String getCurrentGestCollUrl()
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
//MessageBox.Show(path);
path = path + @"\financialApp.exe";
// MessageBox.Show(path);
return path;
}
//--------------------------------------------------------------------------------------------
}
#region Fields
/// <summary>
/// Launch '%USERPROFILE%\Desktop\financialApp\financialApp\bin\Debug\financialApp.exe'
/// </summary>
// ORIGINAL !!!!!!!!!!!!!!!!!
//public string UILoginWindowExePath = "C:\\Users\\ExtremeSwat\\Desktop\\financialApp\\financialApp\\bin\\Debug\\financialApp.exe" +
// "";
public string UILoginWindowExePath = GestCollURL.getCurrentGestCollUrl()+
"";
/// <summary>
/// Launch '%USERPROFILE%\Desktop\financialApp\financialApp\bin\Debug\financialApp.exe'
/// </summary>
///
//ORIGINAL!!!!!!!!!!!!!!!!!!
// public string UILoginWindowAlternateExePath = "%USERPROFILE%\\Desktop\\financialApp\\financialApp\\bin\\Debug\\financialApp.exe";
public string UILoginWindowAlternateExePath = GestCollURL.getCurrentGestCollUrl() + "";
#endregion
}
}
我创建了一个类,其中我有一个静态方法,我找到当前的桌面URL,然后连接我需要的可执行文件。 它有效,但我需要执行快捷方式,例如financialApp.exe的快捷方式
编辑1
从.exe更改为.ink或更改为空将导致我的测试失败
编辑3 - 最终工作版,感谢Simon的建议 此代码块生成我想要的URL
public class GestCollURL
{
public static String getCurrentGestCollUrl()
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
//MessageBox.Show(path);
path = path + @"\financialApp.lnk";
return path;
}
}
此代码重载Launch方法
public static ApplicationUnderTest Launch(ProcessStartInfo startInfo)
{
ApplicationUnderTest abba = new ApplicationUnderTest();
Process launchPad = new Process();
launchPad.StartInfo.UseShellExecute = startInfo.UseShellExecute;
launchPad = Process.Start(TestingStuff.LaunchPadOpen_CloseParams.GestCollURL.getCurrentGestCollUrl());
return abba;
}
这就是我所说的
(in the same class)
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UseShellExecute = true;
Launch(startInfo);
答案 0 :(得分:3)
您应该使用此启动重载:ApplicationUnderTest.Launch Method (ProcessStartInfo)。它允许您准确指定启动被测试应用程序的方式。
请确保将UseShellExecute设置为true,因为链接和快捷方式是无法像普通exes一样启动的shell(资源管理器)对象。
使用操作系统shell启动进程时,可以 启动任何文档(与之关联的任何已注册文件类型) 具有默认打开操作的可执行文件)并执行操作 在文件上,例如使用Process对象进行打印。什么时候 UseShellExecute为false,您只能使用以逗号启动可执行文件 过程对象。
它可能只使用简单的ProcessStartInfo构造函数,路径作为参数,具体取决于您的上下文。