在给定对行

时间:2016-02-19 23:31:00

标签: checkbox visual-studio-2015 microsoft-test-manager

我正在尝试使用MTM测试应用程序。内置的记录和回放机制无法处理这个应用程序的构建方式,所以我试图构建一个解决方法。

我有一个网格,类似于以下

|[]|[ Fruit  ]|[ Read ]|[ Write ]|[ Execute ]|
|  | apple    |   [ ]  |   [ ]   |   [ ]     |
|  | banana   |   [ ]  |   [ ]   |   [ ]     |
|  | coconut  |   [ ]  |   [ ]   |   [ ]     |

交叉点中的单元格是复选框。当我学习香蕉行的Read列的复选框时,它可以工作。当我尝试学习Write列的复选框时,它认为它已经知道它,但它实际上是Read列的那个。它只是将其理解为" UIUncheckedCell"因此,实际上只能识别行中的第一个复选框。这就是我试图解决的问题,最好除了表格之外没有GUI地图中的任何内容。非常有趣的是,如果我在尝试学习复选框之前首先关注单元格,它会以不同方式记录它。这让我有点怀疑。

我已经有了一个可以在表中传递的函数和水果的名称,它将在表格/网格中搜索第一列中包含该水果的行。到目前为止一切都很好。

public WinCell FindCellInTable( WinTable table, int colIndex, string value )

我想要的是一个函数,我可以给出一个列名,然后在表中搜索列,并返回一个列号。 (听起来很容易)

public int FindColumnOfHeader( WinTable table, String columnName )

然后,另一个函数,我给它带有水果的单元格的单元格引用,它从Cell导航到Row,然后从Row导航到Cells列表,然后使用该索引查找适当的列的单元格,最后交给我一个WinCheckBox对象,我可以用它来检查或取消选中单元格。

public WinCheckBox GetCheckboxFor( WinCell cell, int colIndex )
{
    // I think this is the way to get there - it compiles at least!
    WinRow row = new WinRow( cell.GetParent() );
    UITestControlCollection cells = row.Cells;
    UITestControl targetCell = cells[colIndex];
    // But then what do I do?
    // I tried this, but it didn't work 
    // (compiles but does not work for setting the checkbox):
    WinCheckBox cb = new WinCheckBox( targetCell );
    return cb;
}

我无法弄清楚如何从单元格引用转到单元格内的复选框,或者即使单元格中有复选框,或者它只是看起来像复选框,还是什么。

提前感谢您分享您的专业知识!

1 个答案:

答案 0 :(得分:0)

事实证明,看起来在单元格中的复选框并不存在。当我单击一个单元格并学习该复选框时,每个单元格中的所有复选框都被学习为同一个对象。

解决方案是学习一个复选框UIMap条目,然后单击我尝试与之交互的单元格,以强制对象出现在UI中。一旦单元格具有焦点,我就可以与常用的复选框控件元素进行交互,并且它可以在视觉上看起来位于网格单元格内的复选框的实例上工作。

这很难看,但确实有效。

如果有人有更好的答案......