我很难在多列WinList中与单元格连接(不确定这些是否是真正的单元格)。我正在测试一个Windows应用程序。我用多个工具查询了对话框,控件显然是WinList而不是WinTable。
我希望有能力完成三件事:
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从上面使用代码?
答案 0 :(得分:1)
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.