我有一个大型WPF应用程序,我需要运行自动化测试。 我正在使用Coded UI测试构建器。当我将鼠标悬停在应用程序中的单元格上时,我可以看到所有属性:automationId,ColumnHeader等。当我点击刷新按钮时,间谍怎么能找不到他刚刚发现的几个控件?
如果我尝试使用代码找到此控件,我会遇到同样的问题:
WpfCell myCell = new WpfCell();
myCell.SearchProperties.Add(WpfCustom.PropertyNames.AutomationId,"Cell_1_2");
myCell.DrawHighlight();
单元格未突出显示,我得到ControlNotFoundExceptin。
答案 0 :(得分:3)
使用命中测试(十字线)查找元素与使用搜索(使用MSAA / UIA层次结构)查找元素不同。生成的搜索属性可能不好。获取带有十字线的单元格,将其添加到UIMap然后在UIMap编辑器中检查它是否可以找到所有单元格的父级/祖先,然后开始摆弄单元格的搜索属性。修改,保存并搜索单元格(Locate the UI Control
)。重复直到它起作用。
至于代码:没有。不不不。该代码片段的作用是尝试在桌面下找到一个单元格元素。除非您设置层次结构,否则它将无法工作。在构造函数中设置UI元素会将其设置为控件的搜索限制容器"或父母。像
这样的东西var myWindow = new WpfWindow();
var myTable = new WpfTable(myWindow);
var myCell = new WpfCell(myTable);