【问题标题】:Can not manually define wintree object in codedui无法在 codedui 中手动定义 wintree 对象
【发布时间】:2019-01-22 01:56:52
【问题描述】:

我想手动定义一个 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 警告)

     WinTree uITVTree1 = this.WinTreeObject();

Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnBlockedControlException:另一个控件正在阻止该控件。请使被阻止的控件可见,然后重试该操作。额外细节: 技术名称:'MSAA' 控制类型:“树” ---> 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;
        }
    }

【问题讨论】:

    标签: coded-ui-tests


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您回答问题,但请考虑整齐地格式化它们。答案输入区域上方的图标栏有工具提示和“?”右端提供更多帮助。
    猜你喜欢
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多