2012-02-22 112 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發生變化,您也需要在測試中對其進行更改,但使用第二個選項時,您的測試將繼續正常運行。

如果表現真的很重要,我只會走第一條路線,或者我非常確定父母的搜索屬性不太可能改變。即使這樣,我可能會傾向於在問題上拋出更多/更好的硬件。但是,當我使用沒有獨特搜索屬性的控件時,我會使用第一個選項,而較小的容器可以更容易地選擇正確的控件。