编码的UI测试记录新的测试覆盖UIMap.Designer.cs的变化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编码的UI测试记录新的测试覆盖UIMap.Designer.cs的变化相关的知识,希望对你有一定的参考价值。
我正在为成功的登录方案录制Coded UI测试。在提取“Coded UI Test builder”之后,我记录了以下步骤。
- 启动exe
- 点击表格,在页面上触发一些动画,5-6秒后,我可以选择“注册”或“登录”
- 我点击了“登录”(uILoginButton)按钮并成功登录。
当我尝试回放这个测试时,它在第3步崩溃时说,'找不到名为'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()方法。
哪个是添加自定义代码的最佳位置?
永远不要把代码放在.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
文件中,然后您可以安全地编辑该方法,而无需担心重建的设计器文件会覆盖您的更改。
以上是关于编码的UI测试记录新的测试覆盖UIMap.Designer.cs的变化的主要内容,如果未能解决你的问题,请参考以下文章
使用外部文件和负载测试 VS2013 进行编码的 UI 测试