2012-04-01 20 views
1

我的WPF應用程序實現棱鏡框架。有幾個菜單控件會在頁面更改時加載到容器中。 我想使用編碼的用戶界面,向這些按鈕添加斷言。編碼的UI不識別控件一致

當在第一個屏幕上使用CUIT時,似乎沒有任何東西被識別。但在第二個屏幕上,他們得到認可。加載它們的代碼沒有變化,只是控件在第一個屏幕上有一個深度(這就是snoop顯示的)。

我是否還需要在源代碼末端編寫自動化對等代碼來公開控件,儘管它們是標準的WPF控件?

我還可以嘗試讓它們始終得到識別嗎?

Inspect.exe,UIA驗證,史努比顯示所有的WPF控件,不論我在屏幕上的。

+0

在加載第一個屏幕之前嘗試添加['Thread.Sleep()'](http://msdn.microsoft.com/en-us/library/system.threading.thread.sleep.aspx) – KMoraz 2012-04-01 22:41:10

+0

感謝KMoraz,但我無法訪問開發代碼。如果睡眠的目的是在測試代碼中,請你解釋它是如何工作的。 – kris123pra 2012-04-02 08:03:58

+0

它將允許等待所有控件加載 – KMoraz 2012-04-02 09:24:39

回答

2

好了,所以我想我明白。當您轉到第一頁並嘗試使用CodedUI Test Builder或Spy ++突出顯示或選擇一個項目時,控件無法識別,但它們在不同的頁面上被識別。

容器是控件在第一頁上的某種類型的自定義控件還是泛型的WPF控件?如果是自定義控件,則需要實現AutomationPeer類才能對控件執行有意義的操作。如果您只需點擊一個按鈕,您可以手動編寫代碼,以在父容器中手動點擊。

+0

謝謝。這些控件是標準的WPF按鈕。我們發現有另一層阻礙了編碼的用戶界面識別控件。目前這個問題已經解決,但是想知道這些事情是否會再次發生,那麼知道如何實現Peers會很好。任何人都可以建議好網站? – kris123pra 2012-04-10 07:10:28