基于浏览器的UITestControl容器

本文关键字:UITestControl 容器 浏览器 | 更新日期: 2023-09-27 18:25:34

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

举例来说,我有一个相当复杂的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 cont = new HtmlDiv();
cont.SearchProperties.Add("Id", "container");
HtmlDiv div1 = new HtmlDiv(cont);
div1.SearchProperties.Add("Id", "control_I_want");
div1.Find();
HtmlDiv div2 = new HtmlDiv(cont);
div2.SearchProperties.Add("Id", "another_control_I_want");
div2.Find();

和使用浏览器窗口作为父组件的相同代码:

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的资源匮乏,所以再多的谷歌也无法帮助我最终回答这个问题。

基于浏览器的UITestControl容器

这里有一个权衡,这取决于您的应用程序和您认为未来的开发会是什么样子。我认为采用第一条路线会有很小的性能差异,但为了获得性能,您会失去灵活性/可维护性。如果父容器的Id发生更改,您也需要在测试中对其进行更改,但使用第二个选项,您的测试将继续正常运行。

如果性能真的很重要,或者我非常确信父搜索属性不太可能改变,我只会走第一条路。即便如此,我也可能倾向于在这个问题上投入更多/更好的硬件。然而,当我使用没有唯一搜索属性的控件时,我会使用第一个选项,并且较小的容器可以更容易地选择正确的控件。