编码 UI 测试找到按钮的实例 1 和 2,但找不到实例 3、4 或 5
Coded UI Test find instance 1 and 2 of a button but fails to find instance 3, 4 or 5
我正在测试一个有 5 个选项卡的选项卡式控件。每个选项卡都由按钮打开,因此有 5 个 wpf 按钮。我记录了一个打开每个选项卡的测试方法,并且每次都打开选项卡 1。这是有道理的,所以我复制了 5 个方法(使用 "Move code to UIMap.cs" 选项)并放入实例搜索 属性 以搜索实例 1、2、3、4 和 5。这适用于实例1 和 2 但不适用于 3 之后的实例。
我的问题是我已经可以点击实例 1 和 2 的按钮的实例 3、4 和 5 需要做什么?
我的测试方法(适用于选项卡 1 和 2,但在选项卡 3 停止):
[TestMethod()]
public void Common_CompleteTestData_TabbedForm()
{
this.UIMap.Configuration_Tab1_Click();
//Do stuff in tab 1.
this.UIMap.Configuration_Tab2_Click();
//Do stuff in tab 2.
this.UIMap.Configuration_Tab3_Click();
//Do stuff in tab 3.
this.UIMap.Configuration_Tab4_Click();
//Do stuff in tab 4.
this.UIMap.Configuration_Tab5_Click();
//Do stuff in tab 5.
}
UIMap.cs:
public void Configuration_Tab1_Click()
{
#region Variable Declarations
WpfRadioButton uIUCRadioButton = this.UIWPFDTAppSynTQClientShWindow.UIDesignSurfaceCustom.UIWPFDTAppSynTQClientInCustom2.UIUCRadioButton;
uIUCRadioButton.SearchProperties[WpfButton.PropertyNames.Instance] = "1";
#endregion
// Select 'UC' radio button
uIUCRadioButton.Selected = this.Configuration_Tab_n_ClickParams.UIUCRadioButtonSelected;
}
public void Configuration_Tab2_Click()
{
#region Variable Declarations
WpfRadioButton uIUCRadioButton = this.UIWPFDTAppSynTQClientShWindow.UIDesignSurfaceCustom.UIWPFDTAppSynTQClientInCustom2.UIUCRadioButton;
uIUCRadioButton.SearchProperties[WpfButton.PropertyNames.Instance] = "2";
#endregion
// Select 'UC' radio button
uIUCRadioButton.Selected = this.Configuration_Tab_n_ClickParams.UIUCRadioButtonSelected;
}
public void Configuration_Tab3_Click()
{
#region Variable Declarations
WpfRadioButton uIUCRadioButton = this.UIWPFDTAppSynTQClientShWindow.UIDesignSurfaceCustom.UIWPFDTAppSynTQClientInCustom2.UIUCRadioButton;
uIUCRadioButton.SearchProperties[WpfButton.PropertyNames.Instance] = "3";
#endregion
// Select 'UC' radio button
uIUCRadioButton.Selected = this.Configuration_Tab_n_ClickParams.UIUCRadioButtonSelected;
}
public void Configuration_Tab4_Click()
{
#region Variable Declarations
WpfRadioButton uIUCRadioButton = this.UIWPFDTAppSynTQClientShWindow.UIDesignSurfaceCustom.UIWPFDTAppSynTQClientInCustom2.UIUCRadioButton;
uIUCRadioButton.SearchProperties[WpfButton.PropertyNames.Instance] = "4";
#endregion
// Select 'UC' radio button
uIUCRadioButton.Selected = this.Configuration_Tab_n_ClickParams.UIUCRadioButtonSelected;
}
public void Configuration_Tab5_Click()
{
#region Variable Declarations
WpfRadioButton uIUCRadioButton = this.UIWPFDTAppSynTQClientShWindow.UIDesignSurfaceCustom.UIWPFDTAppSynTQClientInCustom2.UIUCRadioButton;
uIUCRadioButton.SearchProperties[WpfButton.PropertyNames.Instance] = "5";
#endregion
// Select 'UC' radio button
uIUCRadioButton.Selected = this.Configuration_Tab_n_ClickParams.UIUCRadioButtonSelected;
}
尝试将您的代码更改为此(每个相应的数字):
WpfRadioButton uIUCRadioButton = this.UIWPFDTAppSynTQClientShWindow.UIDesignSurfaceCustom.UIWPFDTAppSynTQClientInCustom2.UIUCRadioButton;
// May not be neccesarry, I'm not sure how this is implemented.
uIUCRadioButton.SearchProperties.Add(WpfControl.PropertyNames.ControlType, "Button");
// Select 'UC' radio button by finding the control at index number
uIUCRadioButton = uIUCRadioButton.FindMatchingControls()[ControlNumber]
//Here, deal with the click logic. Again, not sure on implementation
uIUCRadioButton.Selected = this.Configuration_Tab_n_ClickParams.UIUCRadioButtonSelected;
我借鉴了 Rescis 的想法,使用 FindMatchingControls 创建了一个控件列表,然后选择了实例。
public void Configuration_Tab_n_Click_New(int instance)
{
#region Variable Declarations
WpfRadioButton uIUCRadioButton = this.UIOptimalSynTQClientShWindow.UIDesignSurfaceCustom.UIOptimalSynTQClientInCustom2.UIUCRadioButton;
uIUCRadioButton.SearchProperties.Add(WpfRadioButton.PropertyNames.ControlType, "RadioButton");
uIUCRadioButton.SearchProperties.Add(WpfRadioButton.PropertyNames.ClassName, "Uia.RadioButton");
#endregion
var uIUCRadioButtonList = uIUCRadioButton.FindMatchingControls();
var clickableButton = uIUCRadioButtonList[instance];
var point = clickableButton.BoundingRectangle;
Point relativePoint = new Point(point.X + 10, point.Y + 10);
Mouse.Click(clickableButton, relativePoint);
}
//Run the test
[TestMethod()]
public void Common_Configuration_SelectTab_3_New()
{
this.UIMap.Configuration_Tab_n_Click_New(3);
}
我正在测试一个有 5 个选项卡的选项卡式控件。每个选项卡都由按钮打开,因此有 5 个 wpf 按钮。我记录了一个打开每个选项卡的测试方法,并且每次都打开选项卡 1。这是有道理的,所以我复制了 5 个方法(使用 "Move code to UIMap.cs" 选项)并放入实例搜索 属性 以搜索实例 1、2、3、4 和 5。这适用于实例1 和 2 但不适用于 3 之后的实例。
我的问题是我已经可以点击实例 1 和 2 的按钮的实例 3、4 和 5 需要做什么?
我的测试方法(适用于选项卡 1 和 2,但在选项卡 3 停止):
[TestMethod()]
public void Common_CompleteTestData_TabbedForm()
{
this.UIMap.Configuration_Tab1_Click();
//Do stuff in tab 1.
this.UIMap.Configuration_Tab2_Click();
//Do stuff in tab 2.
this.UIMap.Configuration_Tab3_Click();
//Do stuff in tab 3.
this.UIMap.Configuration_Tab4_Click();
//Do stuff in tab 4.
this.UIMap.Configuration_Tab5_Click();
//Do stuff in tab 5.
}
UIMap.cs:
public void Configuration_Tab1_Click()
{
#region Variable Declarations
WpfRadioButton uIUCRadioButton = this.UIWPFDTAppSynTQClientShWindow.UIDesignSurfaceCustom.UIWPFDTAppSynTQClientInCustom2.UIUCRadioButton;
uIUCRadioButton.SearchProperties[WpfButton.PropertyNames.Instance] = "1";
#endregion
// Select 'UC' radio button
uIUCRadioButton.Selected = this.Configuration_Tab_n_ClickParams.UIUCRadioButtonSelected;
}
public void Configuration_Tab2_Click()
{
#region Variable Declarations
WpfRadioButton uIUCRadioButton = this.UIWPFDTAppSynTQClientShWindow.UIDesignSurfaceCustom.UIWPFDTAppSynTQClientInCustom2.UIUCRadioButton;
uIUCRadioButton.SearchProperties[WpfButton.PropertyNames.Instance] = "2";
#endregion
// Select 'UC' radio button
uIUCRadioButton.Selected = this.Configuration_Tab_n_ClickParams.UIUCRadioButtonSelected;
}
public void Configuration_Tab3_Click()
{
#region Variable Declarations
WpfRadioButton uIUCRadioButton = this.UIWPFDTAppSynTQClientShWindow.UIDesignSurfaceCustom.UIWPFDTAppSynTQClientInCustom2.UIUCRadioButton;
uIUCRadioButton.SearchProperties[WpfButton.PropertyNames.Instance] = "3";
#endregion
// Select 'UC' radio button
uIUCRadioButton.Selected = this.Configuration_Tab_n_ClickParams.UIUCRadioButtonSelected;
}
public void Configuration_Tab4_Click()
{
#region Variable Declarations
WpfRadioButton uIUCRadioButton = this.UIWPFDTAppSynTQClientShWindow.UIDesignSurfaceCustom.UIWPFDTAppSynTQClientInCustom2.UIUCRadioButton;
uIUCRadioButton.SearchProperties[WpfButton.PropertyNames.Instance] = "4";
#endregion
// Select 'UC' radio button
uIUCRadioButton.Selected = this.Configuration_Tab_n_ClickParams.UIUCRadioButtonSelected;
}
public void Configuration_Tab5_Click()
{
#region Variable Declarations
WpfRadioButton uIUCRadioButton = this.UIWPFDTAppSynTQClientShWindow.UIDesignSurfaceCustom.UIWPFDTAppSynTQClientInCustom2.UIUCRadioButton;
uIUCRadioButton.SearchProperties[WpfButton.PropertyNames.Instance] = "5";
#endregion
// Select 'UC' radio button
uIUCRadioButton.Selected = this.Configuration_Tab_n_ClickParams.UIUCRadioButtonSelected;
}
尝试将您的代码更改为此(每个相应的数字):
WpfRadioButton uIUCRadioButton = this.UIWPFDTAppSynTQClientShWindow.UIDesignSurfaceCustom.UIWPFDTAppSynTQClientInCustom2.UIUCRadioButton;
// May not be neccesarry, I'm not sure how this is implemented.
uIUCRadioButton.SearchProperties.Add(WpfControl.PropertyNames.ControlType, "Button");
// Select 'UC' radio button by finding the control at index number
uIUCRadioButton = uIUCRadioButton.FindMatchingControls()[ControlNumber]
//Here, deal with the click logic. Again, not sure on implementation
uIUCRadioButton.Selected = this.Configuration_Tab_n_ClickParams.UIUCRadioButtonSelected;
我借鉴了 Rescis 的想法,使用 FindMatchingControls 创建了一个控件列表,然后选择了实例。
public void Configuration_Tab_n_Click_New(int instance)
{
#region Variable Declarations
WpfRadioButton uIUCRadioButton = this.UIOptimalSynTQClientShWindow.UIDesignSurfaceCustom.UIOptimalSynTQClientInCustom2.UIUCRadioButton;
uIUCRadioButton.SearchProperties.Add(WpfRadioButton.PropertyNames.ControlType, "RadioButton");
uIUCRadioButton.SearchProperties.Add(WpfRadioButton.PropertyNames.ClassName, "Uia.RadioButton");
#endregion
var uIUCRadioButtonList = uIUCRadioButton.FindMatchingControls();
var clickableButton = uIUCRadioButtonList[instance];
var point = clickableButton.BoundingRectangle;
Point relativePoint = new Point(point.X + 10, point.Y + 10);
Mouse.Click(clickableButton, relativePoint);
}
//Run the test
[TestMethod()]
public void Common_Configuration_SelectTab_3_New()
{
this.UIMap.Configuration_Tab_n_Click_New(3);
}