CodedUi:当窗口的标题名称不断更改时,如何处理窗口的搜索属性

本文关键字:窗口 何处理 属性 搜索 处理 标题 CodedUi | 更新日期: 2023-09-27 18:20:03

我正在尝试在窗口中自动点击控件,根据窗口中选择的内容,窗口的平铺会发生变化。就像有时它是"abc",第二次它将是"123"。对于两种场景,窗口标题中没有公共字符串

当我录制编码的ui测试时,它假设标题为"abc"。现在我想以某种方式自定义测试,这样任何标题都可以工作。

我该怎么做?

任何帮助都会很棒。

CodedUi:当窗口的标题名称不断更改时,如何处理窗口的搜索属性

您可以在运行时更改searchProperties,如下所示:

myUITestControl.SearchProperties.Remove(UITestControl.PropertyNames.Name);myUITestControl.SearchProperties.Add(UITestControl.PropertyNames.Name,"123");

这应该在首次搜索控件之前完成。所以可能在你的测试课的ctor中。(或者,您也可以将"AlwaysSearch"添加到UITestControl的SearchConfigurtation中)

问候Johannes

CodedUI测试确实没有太多内置的"好"选项。为每个测试用例编写十几行搜索属性更改是一大痛苦,更不用说容易出错(忘记更改属性,测试就会中断或慢到爬行)。没有办法在UIMap.designer文件中设置的搜索属性中使用变量,或者至少我想不出在重新生成文件后会坚持的方法。从设计器文件中移出所有内容也不是一个好的选择,因为控件似乎不会随所附方法一起移动

当我遇到这个问题时,我最终在UIMap上使用了反射,并在每个控件的搜索属性上进行了巨大的运行时搜索和替换。这不是一个理想的解决方案,但它确实有效,并使我免于编写大量单独的搜索属性更改。

您可以使用声明的变量

variable="值";(甚至可以使用阵列)myUITestControl.SearchProperties[UUITestControl.PropertyNames.Name]=变量;myUITestControl.SearchProperties[UUITestControl.PropertyNames.Name]=变量[1];

或者,如果你知道部分窗口名称,你可以使用:

myUITestControl.SearchProperties.Add("名称"、"值"、propertyExpressionOperator.Contains);

或myUITestControl.SearchProperties.Add(新的PropertyExpression(WinWindow.PropertyNames.Name,"Value",PropertyExpressionOperator.Contains));