我目前正在尝试使用C#为Web应用程序自动化一些编码的UI测试.我遇到的一个常见问题是,确定UITestControl页面上是否存在对象非常困难.遗憾的是,微软在其MSDN网站上提供的有关编码UI测试的文档实际上并不存在(请参阅此处的页面UITestControl).
基本上我要问的是:
UITestControl页面上是否存在的最佳方法是什么?UITestControl.Exists物业如何运作?UITestControl.Find()方法有什么作用?UITestControl.TryFind()方法如何工作?我是怎么试图处理它的:
正如我之前提到的,所有这些类和方法的文档大多是空白的.你可以用来描述任何方法和属性的最多是Intellisense中的1行描述,所以我一直在试验列出的方法.
首先,我尝试检查该UITestControl.Exists属性是否属实,但随着时间的推移并咨询其他人的经验,即使浏览器未打开,也很明显它总是返回true.由于看起来最明显的选项不起作用,我尝试使用该UITestControl.Find()方法,但由于它不需要参数并且什么都不返回,所以我无法弄清楚它的作用.我尝试使用这种UITestControl.TryFind()方法,偶尔也可以使用,但我发现当我没有在正确的页面上时,它似乎只会返回错误; 否则它总是返回true.显然我不知道它是如何工作的,不应该用它作为测试.
我想如果我不能得到提供的方法来完成他们的工作,我必须尝试制作自己的工具.我最近尝试Mouse.Hover(UITestControl)在try/catch块中使用来确定控件是否存在如下:
public bool DoesExist(UITestControl control){
if(control == null)
return false;
try{ Mouse.Hover(control); }
catch (UITestException)
{
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
它有时会起作用,但在某些情况下它似乎会因为我不理解的原因而返回误报.我仍然是盲目的,我几乎没有想法.
我使用的是Visual Studio 2012和Microsoft .NET Framework 4.5.50709版.