我正在编写的用于编码UI测试的应用程序有一个窗口,其中部分窗口标题基于为临时文件生成的随机文件名,因此测试只能知道窗口标题的静态部分。
有时,当没有其他窗口打开时,测试运行正常。但是,当其他窗口打开时,这有点问题。如果其他窗口具有类似的控件,则测试选择哪个窗口是不可预测的。
答案 0 :(得分:13)
我已将其缩小到这一点:在搜索控件时,Coded UI Test使用搜索属性和树状结构的控件。如果它找不到完全匹配,它会找到一个匹配的匹配(因此它找不到确切的窗口标题名称,它排除了它并继续搜索与任何其他给定属性匹配的窗口),这就是它与控件一起工作的原因在其他窗口。
解决方案实际上是为了给它提供更多的搜索属性。我使用的一种方法是使用PropertyExpression添加属性并将其传递给PropertyExpressionOperator.Contains。
作为一个例子,我记录了打开MS Word并关闭它。这会在UIMap中生成一个控件,其构造函数如下:
this.SearchProperties[WinWindow.PropertyNames.Name] = "Document1 - Microsoft Word";
this.SearchProperties[WinWindow.PropertyNames.ClassName] = "OpusApp";
相反,第一行应该是:
this.SearchProperties.Add(new PropertyExpression(WinWindow.PropertyNames.Name, "Microsoft Word", PropertyExpressionOperator.Contains));
答案 1 :(得分:3)
或者更简单,您可以使用:
this.SearchProperties.Add(WinWindow.PropertyNames.Name, "Microsoft Word", PropertyExpressionOperator.Contains);