我正在为成功的登录场景录制一个编码的UI测试。在拔出“编码的UI测试生成器”之后,我记录了以下步骤。
当我尝试回放这个测试时,它在第三步崩溃,上面写着“找不到名为'btnLogin‘的UI元素
因此,我导航到UIMap.Designer.cs文件,并在单击按钮之前添加了下面的代码行。
uILoginButton.WaitForControlExist();我在“UIMap.Designer.cs”中录制的方法如下所示
/// <summary>
/// DoLogin
/// </summary>
public void DoLogin()
{
#region Variable Declarations
WpfButton uILoginButton= this.UIMPortPodGUIWindow.UIItemCustom7.UIContinueButton;
#endregion
uILoginButton.WaitForControlExist(100);
// Click 'Continue' button
Mouse.Click(uILoginButton, new Point(191, 42));
}在此之后,我回放了这个测试,我很高兴看到一切都很好。然后,我开始记录第二次测试,在完成记录之后,我意识到录音已经覆盖了我以前对UIMap.Designer.cs的更改,即下面的行丢失了。
uILoginButton.WaitForControlExist();我知道它应该放在'UIMap.cs‘中,但是不知道如何在两个类中部分声明DoLogin()方法。
哪个地方是添加自定义代码的最佳位置?
发布于 2015-02-17 00:59:34
不要将代码放入.Designer.cs中,除非您不关心它是否会被随机丢失。
在这种情况下,我通常要做的是从自动生成的DoLogin复制代码,并在具有自定义步骤的UIMap.cs (而不是UIMap.Designer.cs)中创建自己的方法。
public partial class UIMap
{
public void DoLoginWithWait()
{
#region Variable Declarations
WpfButton uILoginButton = this.UIMPortPodGUIWindow.UIItemCustom7.UIContinueButton;
#endregion
uILoginButton.WaitForControlExist(100);
// Click 'Continue' button
Mouse.Click(uILoginButton, new Point(191, 42));
}
}程序生成的空UIMap.cs是针对您所处的确切情况的。UIMap.cs不会在新步骤的记录过程中被覆盖,这样您就可以安全地将代码放入其中。
编辑
在深入观察了一下之后,我发现有一个按钮可以让这更容易。在UIMap.uitest编辑器中单击

按钮(或Ctrl+Alt+C) --这将将该方法从设计器中取出并放入UIMap.cs文件中,然后您可以安全地编辑该方法,而不必担心重新构建的设计器文件覆盖您的更改。
https://stackoverflow.com/questions/28552937
复制相似问题