2013-11-22 28 views
2

在Web應用程序上,我注意到Coded UI沒有像普通的html控件一樣捕獲某些類型的控件,這抑制了我對數據驅動這些元素的能力。爲什麼編碼的用戶界面不能識別某些控件?

這些控件的一些示例是Telerik Ajax控件,也是理想形式,這是一個類似於引導程序的js框架。

導致Coded UI和這些類型控件之間不兼容的原因是什麼?除了替換應用程序的控件之外,是否有任何解決方法?

回答

2

編碼的用戶界面使用MSAA(Microsoft Active Accessibility)或UIA( UI自動化)接口。這些接口最初提供的功能是允許視力受損人士使用屏幕閱讀程序,或者爲敏捷問題的人提供其他形式的鍵盤和鼠標。編碼UI使用這些接口並以與這些程序驅動應用程序相同的方式驅動應用程序。

應用程序的UI控件必須寫入以支持MSAA或UIA。幾乎所有最近的Microsoft控件都支持這些接口,但在較早的接口(如MFC和Win32)中支持有限。除非實施MSAA或UIA接口,否則不支持自定義控件。某些第三方自定義控件不支持這些接口。檢查他們的支持頁面,並查看不同版本支持的編碼UI支持的級別。

許多第三個控件的最新版本確實支持編碼UI。

+0

@hirosht編輯擴展縮寫是好的,但是當你做一個編輯時,請使編輯註釋正確。你的編輯沒有「改進格式」。 – AdrianHHH

+0

當然,我會在下一次。當我正在尋求問題的答案時,你的答案實際上讓我學習了這兩個縮寫。 – hirosht

1

微軟編寫的用戶界面不支持最後我知道的Telerik控件。編碼的UI在許多第三方控件(Telerik,Infragistics等)上無法正常工作。唯一的選擇是將控件更改爲更原生的,或使用其他自動化測試工具,如HP Quick Test Professional或Telerik等。

2

由於前面的答案已經涵蓋了原因,我將專注於「現在怎麼樣?」

我們採用了各種解決方案來處理難以控制的控件。

  • 屏幕點:一個應用程序提出了一個窗體,編碼的UI看起來像一個空白窗口。我們在測試期間調整應用程序的大小以確保一致的放置和使用屏幕點。這具有最高的維護成本,對最佳測試實踐的依從性最低,並且不會受到骯髒的黑客攻擊。
  • 鍵盤快捷鍵 - 用於遍歷編碼ui無法看到的列表/下拉列表,然後使用向下鍵以基於結構,枚舉或結構的xml進行導航。當選項更改位置/訂單時很容易更新它們
  • sikuli - 最健全的,但有時最棘手的是圖像驗證。我們通過調用控件的屏幕快照並使用sikuli代碼通過從編碼的UI中調用sikuli腳本與對象進行交互。由於這是編碼的UI之外,日誌不會自動包含在內。假陽性和假陰性可以在大部分時間內工作。
  • 迴避 - 如果我們無法確認在控制編碼的UI內容看不到,我們馬上彙報說那款是不是自動化候選者,將需要手動檢查
相關問題