问题 如何使用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列表或组合框上使自动化正常工作。我无法将其改编为Window。


5518
2018-05-27 09:55


起源

AutomationProperties.Name和x:Name之间的差异是AutomationProperties.Name可以被数据化,当您使用WVVM模式时,这是非常好的,您可以将自动化属性添加到VM并将其绑定到View中。不使用测试构建器创建自己的UIMap。这将为您提供更加可控的地图。我希望创建一个演示此内容的小样本并将其发布到我的博客上。当我完成时,我会给它一个链接。 - CoffeeCode


答案:


您可以更改附加属性 AutomationProperties.Name 要么在XAML中使用:

AutomationProperties.Name =“新名称”

或者在代码中使用:

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


11
2017-11-05 12:16





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

我这样做,工作正常。


1
2017-10-05 07:48





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

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

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

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


0
2017-08-28 01:15