我想告诉自己有关编码 UI 测试的信息。所以我创建了一些编码的 ui 测试并玩了一下。
但现在我到了无法自拔的地步。我有以下问题。当我从 dotNet 4.5 程序记录一些动作时,记录器通过SearchProperties[WinText.PropertyNames.Name]定位表单、按钮、文本字段等,这绝对是不酷的。
想象一下,您想对文本控件进行断言。WinText.PropertyNames.Name 将是计算值。因此,如果您更改表单中影响计算的某些输入值,WinText.PropertyNames.Name 将更改为新值,并且编码的 ui 测试将找不到具有更改值的文本控件,因为它搜索了 WinText。控件的 PropertyNames.Name 而不是WinText.PropertyNames.ControlName。
我的问题是,有没有办法更改编码的 ui 测试构建器用来定位所需对象的标准搜索属性的配置?
因为之后要为每个记录的对象更改它需要付出很大的努力。
PS:我说的不是C:\Program Files (x86)\Common Files\microsoft shared\VSTT\11.0\IEPropertyConfiguration.xml,它只对 ie 网站有效 =)
额外的:
让我们把事情说清楚:
这是我的代码:
public class UIItem100180Window : WinWindow
{
public UIItem100180Window(UITestControl searchLimitContainer) :
base(searchLimitContainer)
{
#region Search Criteria
this.SearchProperties[WinWindow.PropertyNames.ControlName] = "wert2Praemie12";
this.WindowTitles.Add("Any Title");
#endregion
}
#region Properties
public WinText UIItem100180Text
{
get
{
if ((this.mUIItem100180Text == null))
{
this.mUIItem100180Text = new WinText(this);
#region Search Criteria
this.mUIItem100180Text.SearchProperties[WinText.PropertyNames.Name] = "1.001,80";
this.mUIItem100180Text.WindowTitles.Add("Any Title");
#endregion
}
return this.mUIItem100180Text;
}
}
#endregion
#region Fields
private WinText mUIItem100180Text;
#endregion
}
我有一个父控件(UIItem100180Window:WinWindow),它在 UI 上创建我的Text-Control(UIITem100180Text:WinText),它代表我的计算值。问题是两者都有相同的.PropertyNames.ControlName =)。
这意味着如果我要添加:
this.mUIItem100180Text.SearchProperties[WinText.PropertyNames.ControlName] = "wert2Praemie12";
它会一直找到我的父控件:WinWindow。如果我没有添加它并且计算的值发生变化(可能计算方法被编辑,..),它不等于this.mUIItem100180Text.SearchProperties[WinText.PropertyNames.Name] = "1.001,80"; 找不到控件,并且会抛出错误消息“..control not found”。
稍后我会在这一行遇到问题,检查我的文本控件(WinText)的值:
public void VerifyTextControl()
{
#region Variable Declarations
WinText uIItem100180Text = this.xxx.UIItem100180Window.UIItem100180Text;
#endregion
// Verify that the 'DisplayText' property of '1.001,80' label equals '1.001,80'
Assert.AreEqual("1.001,80", uIItem100180Text.DisplayText, "järhlich muss 1.001,80 € betragen!");
}
我的uIItem100180Text:WinText被作为WinWindow处理,因为当我搜索 PropertyNames.ControlName 时它只找到我的父控件,就像我说的一样,它们的名称相同。所以我不能使用 .DisplayText-method,它以错误消息结尾。
最好的解决方案是,对父控件进行断言,因为它还保留了文本控件的值,并且您不会遇到像我这样的问题。
也许这篇文章对在同一点上挣扎的人有所帮助。
注意:
UITestControl->WinControl->WinText
UITestControl->WinControl->WinWindow