C# 基于浏览器的UITestControl容器

C# 基于浏览器的UITestControl容器,c#,coded-ui-tests,C#,Coded Ui Tests,使用编码的UI框架编写测试时,使用浏览器窗口以外的容器开始搜索控件是否有任何好处 举例来说,我有一个相当复杂的html,有很多嵌套。HTML中的某个地方有如下内容: <nested tags (lots of them)> <div id='container'> <a lot of nested tags> <div id="control_I_want"></div>

使用编码的UI框架编写测试时,使用浏览器窗口以外的容器开始搜索控件是否有任何好处

举例来说,我有一个相当复杂的html,有很多嵌套。HTML中的某个地方有如下内容:

<nested tags (lots of them)>
    <div id='container'>
         <a lot of nested tags>
             <div id="control_I_want"></div>
             <div id="another_control_I_want"></div>
         </a lot of nested tags>
    </div>
</nested tags (lots of them)>
以及使用浏览器窗口作为父组件的相同代码:

HtmlDiv div1 = new HtmlDiv();
div1.SearchProperties.Add("Id", "control_I_want");
div1.Find();

HtmlDiv div2 = new HtmlDiv();
div2.SearchProperties.Add("Id", "another_control_I_want");
div2.Find();

根据你的经验,一种方法比另一种好吗?不幸的是,CUIT的资源非常稀缺,因此没有多少谷歌帮助我最终回答了这个问题。

这里有一个权衡,这取决于您的应用程序和您认为未来的开发情况。我认为第一条路线的性能差别不大,但为了获得性能,您失去了灵活性/可维护性。如果父容器的Id更改,您也需要在测试中更改它,但是使用第二个选项,您的测试将继续正常运行

如果性能真的很重要,或者我非常确定父搜索属性不太可能改变,我只会选择第一条路线。即使这样,我也可能倾向于用更多/更好的硬件解决这个问题。但是,当我使用没有唯一搜索属性的控件时,我会使用第一个选项,较小的容器可以更容易地选择正确的控件

HtmlDiv div1 = new HtmlDiv();
div1.SearchProperties.Add("Id", "control_I_want");
div1.Find();

HtmlDiv div2 = new HtmlDiv();
div2.SearchProperties.Add("Id", "another_control_I_want");
div2.Find();