2012-10-22 115 views
2

我已經開始使用最近的編碼UI測試來自動化我的Windows應用程序,並在訪問某些MSAA控件時遇到問題。 我手動編碼我的自動化,不想將控件添加到UI地圖,然後使用它。無法識別MSAA控件

我卡住的控件是左側窗格中的一個treeItem,它選擇機器和細節顯示在中間的客戶區左側。

我試圖搜索控制使用十字準線顯示到UI控件上的屬性,但徒勞無功。

以下是我已經嘗試了代碼 -

UITestControl machine = new UITestControl(App); 
     machine.TechnologyName = "MSAA"; 
     machine.SearchProperties.Add(WinTreeItem.PropertyNames.ControlType,  "TreeItem"); 
     machine.SearchProperties.Add(WinTreeItem.PropertyNames.Name, "Machine1"); 
     machine.SearchProperties.Add(WinTreeItem.PropertyNames.ControlName, "m_tvPlantStructureView"); 
Mouse.Click(machine); // This code gives an error 

ERROR-

Microsoft.VisualStudio.TestTools.UITest.Extension.UITestControlNotFoundException: 播放未能找到與給定的控制搜索 屬性。其他詳細信息:技術名稱:'MSAA'ControlType: 'TreeItem'Name:'Machine1'ControlName:'m_tvPlantStructureView' ---> System.Runtime.InteropServices.COMException:Error HRESULT E_FAIL已從調用返回到COM組件。

請參閱附件。 請讓我知道,什麼是問題,以及要完全擺脫未來未識別的控制錯誤的過程。

目前,我遵循做十字準線和獲取屬性,然後編寫控件的屬性以自動執行用戶操作和斷言的方法。但這種方式並不總是奏效。

讓我知道是否有更好的方法來做到這一點。

+0

你在說什麼控制? DevExpress,Infragistics,您的自定義控件還是普通.NET? – nikita

回答

0

您需要進行層次結構搜索。創建2個控件:首先將Treeview作爲窗口。使用控件名稱m_tvPlantStructureView,然後用名稱Machine1創建一個新的TreeItem。

var treeView = new WinWindow(App); 
treeView.SearchProperties.Add(WinWindow.PropertyNames.ControlName, "m_tvPlantStructureView"); 

var machine= new WinTreeItem(treeView); 
machine.SearchProperties.Add(WinTreeItem.PropertyNames.Name, "Machine1"); 

Mouse.Click(machine); // This code gives an error 

如果失敗的另一件事是從樹視圖中刪除應用程序並添加窗口標題。

讓我知道如果您有任何問題。

var treeView = new WinWindow(); 
treeView.WindowTitles.Add("mywindowname"); 
treeView.SearchProperties.Add(WinWindow.PropertyNames.ControlName, "m_tvPlantStructureView"); 

var machine= new WinTreeItem(treeView); 
machine.SearchProperties.Add(WinTreeItem.PropertyNames.Name, "Machine1"); 

Mouse.Click(machine); // This code gives an error 
0

做鼠標CLIK之前,我進行使用

machine.Find(); 

之後,搜索控制的,我檢查,如果機器有不同的空值,如果是它不爲空,我執行點擊。