我最近开始使用编码的UI测试自动化我的Windows应用程序,并在访问某些MSAA控件时遇到问题。 我正在编写自动编码,不想将控件添加到UI Map然后使用它。
我卡住的控件是左窗格上的treeItem,它选择机器,细节显示在中心的客户区左侧。
我尝试使用crosshair所显示的属性搜索控件到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
错误 -
Microsoft.VisualStudio.TestTools.UITest.Extension.UITestControlNotFoundException: 播放无法通过给定搜索找到控件 属性。其他详细信息:TechnologyName:'MSAA'ControlType: 'TreeItem'名称:'Machine1'ControlName:'m_tvPlantStructureView' ---> System.Runtime.InteropServices.COMException:错误HRESULT已从调用COM组件返回E_FAIL。
请参阅附件。 让我知道,问题是什么以及应该采取什么样的流程来彻底摆脱未来未被认识到的这种控制错误。
目前,我遵循执行十字准线并获取属性然后对该控件属性进行编码以自动执行用户操作和断言的方法。但这种方式并不总是有效。
如果有更好的方法,请告诉我。
答案 0 :(得分:0)
您需要进行层次结构搜索。创建2个控件:首先是Treeview as Window。使用控件名称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
如果失败的另一件事是从树视图中删除App并添加窗口标题。
如果您有任何问题,请与我们联系。
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
答案 1 :(得分:0)
在点击鼠标之前,我使用
搜索控件machine.Find();
之后,我检查机器的值是否为null,如果不是null,我执行单击。