如何使用AutomationProperties.Name?

任何人都可以解释(最好用代码示例)如何使用XAML以编程方式和声明方式使用AutomationProperties.Name属性?

说明

据我所知,Visual Studio 2010中的Coded UI Builder将Window的名称作为SearchProperty。

由于我的Window名称发生了变化,我希望我的Coded UI测试可以依赖一个常量的SearchProperty。

在下面的代码示例中,我不希望窗口标题被硬编码为“管道1的属性”,因为它会发生变化。

代码示例

[GeneratedCode("Coded UITest Builder", "10.0.30319.1")] public class UIListViewPropertiesTable1 : WpfTable { public UIListViewPropertiesTable1(UITestControl searchLimitContainer) : base(searchLimitContainer) { #region Search Criteria this.SearchProperties[WpfTable.PropertyNames.AutomationId] = "listViewProperties"; this.WindowTitles.Add("Properties of Pipe 1"); #endregion } #region Properties public WpfText NameOfComponent { get { if ((this.mNameOfComponent == null)) { this.mNameOfComponent = new WpfText(this); #region Search Criteria this.mNameOfComponent.SearchProperties[WpfText.PropertyNames.Name] = "Pipe 1"; this.mNameOfComponent.WindowTitles.Add("Properties of Pipe 1"); #endregion } return this.mNameOfComponent; } } #endregion #region Fields private WpfText mNameOfComponent; #endregion } 

链接

下面是一个示例: 如何:在数据绑定的WPF列表或combobox上使自动化正常工作 。 我无法将其改编为Window。

您可以使用以下命令在XAML中更改附加属性AutomationProperties.Name

AutomationProperties.Name =“新名称”

或者在代码中使用:

Button.SetValue(AutomationProperties.NameProperty,“new value”);
要么
AutomationProperties.SetName(Button,“new value”);

您可以将Window Title作为参数传递给其父级,并在初始化时设置此参数。

我这样做,工作正常。

有一种方法可以解决这个问题,但它有点难看。

我们将使用包含对窗口的引用的proprty被缓存而不是每次都查找的事实。

uimap类是一个部分类,您可以在uimap.cs文件中包含stil作为uimap类的一部分的代码。

添加一个方法,接受窗口标题作为参数,并执行搜索,并将找到的窗口放入生成的代码的UIListViewPropertiesTable1属性中。