无法在WinTable中进行迭代

时间:2019-01-16 07:48:55

标签: coded-ui-tests

我有一个WinTable记录器,我想用测试值检查一些行值。由于每天都会添加新行,因此行索引值是动态的,因此我需要找到它。我需要迭代所有行以获取要检查其值的正确行。但是,我还不能迭代表中的所有行。

        #region Variable Declarations
        WinTable uIG1Table = this.UIProMANAGEWindow.UIMouldOperationWindow.UIG1Window.UIG1Table;
        #endregion
        Assert.AreEqual(this.OperationListTableControl1ExpectedValues.UIG1TableControlType, uIG1Table.ControlType.ToString());

当我有了行索引时,我可以使用GetRow纠正行

        WinRow dataGridrow = uIG1Table.GetRow(1);
        MessageBox.Show(dataGridrow.RowIndex.ToString());

当我没有行索引时,我需要进行迭代,但是我无法为所有行循环,因此代码永远不会进入foreach循环。

        UITestControlCollection rows = uIG1Table.Rows;

        foreach (WinRow row in uIG1Table.Rows)

        {

            MessageBox.Show(row.RowIndex.ToString());
            foreach (WinCell cell in row.Cells)

            {
                MessageBox.Show(cell.Value);
            }

我也试图将行作为数组进行辩解,但没有成功

       // MessageBox.Show(rows[5].RowIndex.ToString());

1 个答案:

答案 0 :(得分:1)

如果“行”集合中的行为零,它将不会进入for循环。 因此,您应该检查集合的行数。

您绝对可以带着孩子来遍历WinTableUitestcontrolCollection rows = WinTable.GetChildren(),然后将其放入for循环中。

但是,如果在表和行之间还有另一个控件,则需要检查层次结构。