寫CodedUI時如何尋找控制項的小技巧

在用CodedUI寫自動化測試時,我不喜歡用工具產生的代碼(相關資訊可參考手工製Coded UI Test(Visual Studio 2010新的UI自動化測試)),寫久了有一些經驗,例如找到控制項的一些的小技巧。

在用CodedUI寫自動化測試時,我不喜歡用工具產生的代碼(相關資訊可參考手工製Coded UI Test(Visual Studio 2010新的UI自動化測試)),寫久了有一些經驗,例如找到控制項的一些的小技巧。

 

工具

尋找控制項我也是用Visual Studio 2010內建的CodedUITestBuilder.exe,不過一般的情況下CodedUITestBuilder.exe必需搭配測試專案的UIMap.uitest使用,有點麻煩,不過還好它有提供獨立執行的方法。

CodedUITestBuilder.exe的執行畫面

圖1 CodedUITestBuilder.exe的執行畫面

 

在CMD中下

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\CodedUITestBuilder.exe" /standAlone

多一個參數/standAlone就可以單獨執行,也加入Visual Studio的External Tools中,方便日常的呼叫。

External Tools視窗

圖二 External Tools視窗

 

尋找控制項

使用CodedUITestBuilder的UIMap功能,使用的方式有二種。

  1. 按下 Windows key + U,會自動選取到游標所在的控制項,適用在不方便滑鼠拖曳的情況下
  2. 滑鼠拖曳下圖紅色框中的Icon,到控制項上方

拖曳用的Icon

圖三 拖曳用的Icon

選到控制項的晝面

圖四 選到控制項的晝面

 

選擇到控制項後,會出現控制項的說明視窗,裡面有控制項的各個屬性值與階層,可以用來做為寫CodedUI的搜尋條件。

控制項的說明視窗

圖五 控制項的說明視窗

 

像Name=q,Code就可以這樣寫


//假設已經開啟了IE且網址在www.google.com上
BrowserWindow window = BrowserWindow.Locate("Google");            

HtmlEdit input = new HtmlEdit(window);
input.SearchProperties[HtmlEdit.PropertyNames.Name] = "q";
input.Text = "黃偉榮";

控制項視窗的屬性值,都可以做為搜尋條件

圖六 控制項視窗的屬性值,都可以做為搜尋條件

 

階層問題

之前有遇到問題,條件都下對,就是找不到控制項,後來發現可能是階層問題,可以試著一層一層的去找到控制項。

控制項都可以將父視窗傳進去,然後可以只搜尋子控制項

圖七 控制項都可以將父視窗傳進去,然後可以只搜尋子控制項

NOTE:

如果嘗試幾次都失敗,可以叫出產生器,去看產生的CodedUI是如何去找到控制項。