2012-10-22 83 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(); 

之后,搜索控制的,我检查,如果机器有不同的空值,如果是它不为空,我执行点击。