基于浏览器的UITestControl容器
问题描述:
使用编码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的资源很少,所以没有任何谷歌帮助我确切地回答这个问题。
答
这里有一个权衡取决于你的应用程序和你认为未来发展的样子。我认为在实现第一条路线时性能差异很小,但是为了提高性能,您会失去灵活性/可维护性。如果父容器的Id发生变化,您也需要在测试中对其进行更改,但使用第二个选项时,您的测试将继续正常运行。
如果表现真的很重要,我只会走第一条路线,或者我非常确定父母的搜索属性不太可能改变。即使这样,我可能会倾向于在问题上抛出更多/更好的硬件。但是,当我使用没有独特搜索属性的控件时,我会使用第一个选项,而较小的容器可以更容易地选择正确的控件。