无法在Codedui中手动定义Wintree对象

时间:2019-01-15 11:09:04

标签: coded-ui-tests

我想手动定义一个wintree对象,如下面链接中其他一些控件所述 https://www.evoketechnologies.com/blog/windows-automation-testing-coded-ui/

首先,我在如下的UIMap文件中定义了一个wintree对象

    public WinTree WinTreeObject()
    {
    var winTreeProps = new WinTree(WinWindow) { TechnologyName = "MSAA" };
    winTreeProps.SearchProperties.Add("ControlName", "tv");
        winTreeProps.WindowTitles.Add("ProMANAGE ( admin @ Demo )");
    return winTreeProps;
    }

我在代码中这样称呼(如果我不对WinTreeObject使用括号,VS会发出3w异常警告)

     WinTree uITVTree1 = this.WinTreeObject();

Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnBlockedControlException:另一个控件正在阻止该控件。请使被阻止的控件可见,然后重试该操作。额外细节: 技术名称:“ MSAA” ControlType:“树”  ---> System.Runtime.InteropServices.COMException:HRESULT .. 0xF004F003

这是我记录时在设计器文件中定义的方式

    public WinTree UITVTree
    {
        get
        {
            if ((this.mUITVTree == null))
            {
                this.mUITVTree = new WinTree(this);
                #region Search Criteria
                this.mUITVTree.WindowTitles.Add("ProMANAGE © ( admin @ Demo )");
                #endregion
            }
            return this.mUITVTree;
        }
    }

1 个答案:

答案 0 :(得分:1)

您始终可以使用编码UI定义Wintree对象。 一种方法如下:

Private WinTree ProductivityTree
{
    get
       {
           WinTree wintreeObj= new WinTree(parentobj);
           WintreeObj.searchproperties.add(Wintree.PropertyNames.Name,"treeTest");
           return wintreeObj;
         }
}

当层次结构下还有更多控件并且您尝试访问上面的控件时,就会遇到错误(即被阻止的控件)。

您可以在测试构建器的帮助下检查层次结构。