2012-02-22 216 views
2

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

说明 - 说我有一个相当复杂的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(); 

从你的经验 - 是一个方法比其他更好的:使用浏览器窗口的父组件

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(); 

和相同的代码?不幸的是,CUIT的资源很少,所以没有任何谷歌帮助我确切地回答这个问题。

回答

0

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

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