问题描述
||
我目前正在将UI测试移至CodedUI测试。目前,我面临以下麻烦:
在我的UnitTest中,我两次调用了位于UIMap中的方法。该方法包含一个片段,该片段检查MessageBox窗口是否已打开,并具有一个布尔参数,用于切换是单击消息框中的确认还是取消按钮。消息框永远不会改变(意味着其标题,文本,按钮)。
public void MyUiMethod(bool p)
{
//...variable initialization...
ApplicationUnderTest app = ApplicationUnderTest.Launch(@\"some.exe\");
try
{
//... get to the point that triggers the MB to show...
Assert.AreEqual(true,uImessageBoxWindow.Exists);
if (p)
Mouse.Click(uIConfirmButton,new Point(39,16));
else
Mouse.Click(uICancelButton,new Point(49,8));
}
finally
{
app.Close();
}
}
每次通话均无任何问题。
在第二个呼叫期间,将弹出“消息框”,但测试框架无法定位。
CodedUiTestBuilder分配给MessageBox的搜索条件是其名称(Info)和类名(#32770)。
有人对这里可能出什么问题有任何暗示吗? MessageBox控件中是否缺少某些可访问性?
问候,
塞布
解决方法
您可以通过测试方法刷新地图。因此,当您第二次在局部类中调用该方法时,只需将类似UIMap的名称放到MapName = new UIMap();中。然后,这将刷新地图,您可以再次调用窗口而不会出现刷新问题。
public void MyUiMethod(bool p)
{
UIMap MapName = new UIMap();
//...variable initialization...
ApplicationUnderTest app = ApplicationUnderTest.Launch(@\"some.exe\");
try
{
//... get to the point that triggers the MB to show...
Assert.AreEqual(true,MapName.uImessageBoxWindow.Exists);
UIMap MapName = new UIMap();
if (p)
Mouse.Click(MapName.uIConfirmButton,new Point(39,16));
else
Mouse.Click(MapName.uICancelButton,new Point(49,8));
}
finally
{
app.Close();
}
}
希望这可以帮助。