CodedUI测试期间与多列WinList控件的单元格接口
本文关键字:控件 WinList 单元格 接口 测试 CodedUI | 更新日期: 2023-09-27 18:24:54
我在与多列WinList中的单元格(不确定这些单元格是否真的是单元格)接口时遇到了困难。我正在测试一个windows应用程序。我用多个工具查询了对话框,控件显然是WinList,而不是WinTable。
我希望有能力完成3件事:
1) 读取单元格的值
2) 编辑单元格的值
3) 鼠标点击单元格
我已经能够使用以下代码完成"从单元格读取"(项目#1):
var value = new WinListItem(myGetList(myListId).Items[3]).GetColumnValues()[1];
当涉及到编辑或鼠标点击单元格时,我找不到任何方法来定位它们。
首先,我尝试将WinList转换为WinTable,这样我就可以使用更强大的WinTable属性:
var table = (WinTable)(myGetList(myListId));
这是一次失败。
我还尝试使用WinList:实例化一个表
var table = new WinTable(myGetList(myListId);
这也是一次失败。
我正在测试一个动态应用程序,并尽量避免使用屏幕坐标和UImap。我发现这些方法缺乏持久性,并且希望尽可能使用代码。
有人能帮我完成项目2&3从上面使用代码?
UIMap的持久性取决于其中的代码。由于该映射有两个分部类(map.designer.cs和map.cs),我将使用map.cs分部类并以与步骤1相同的方式创建对象。
// Here, you've created a WinListItem
new WinListItem(myGetList(myListId).Items[3])
// so, let's extrapolate that:
public WinListItem MyListItem(int row, int column)
{
WinListItem target = new WinListItem(myGetList(myListId).Items[row]);
UITestControlCollection columns = target.GetChildren();
return (WinListItem)columns[column];
}
现在,您可以发送MyWinListItem(3, 1).DisplayText = "blah";
和Mouse.Click(MyWinListItem(3, 1));
来执行需求2和3。