在编码的UI测试中只知道部分窗口标题时查找窗口

我正在编写的用于编码UI测试的应用程序有一个窗口,其中窗口标题的一部分基于为临时文件生成的随机文件名,因此测试只能知道窗口标题的静态部分。

偶尔,当没有其他窗口打开时,测试运行正常。 但是,当其他窗口打开时,这有点问题。 如果其他窗口具有类似的控件,则测试选择哪个窗口是不可预测的。

我把它缩小到这个:当搜索控件时,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)); 

或者更简单,您可以使用:

 this.SearchProperties.Add(WinWindow.PropertyNames.Name, "Microsoft Word", PropertyExpressionOperator.Contains);