我目前正在为使用Telerik ASP.Net框架的Web数据输入应用程序开发一个测试框架,并且遇到了阻塞程序。如果我在调试模式中单步执行代码,测试将找到我要查找的文本框并输入一些测试数据,然后将该数据保存到数据库中。我遇到的问题是,当我让测试自己运行时,测试失败,说它无法使声明的列变细。这是我的代码:
/*Method to enter test data into cell*/
private TableCell EditFieldCell(string columnHeader)
{
var columnIndex = ColumnIndex(columnHeader);
if (columnIndex == -1)
throw new InvalidOperationException(String.Format("Column {0} not found.", columnHeader));
return NewRecordRow.TableCells[columnIndex];
}
/*Method to return column index of column searching for*/
public int ColumnIndex(string columnHeader)
{
var rgTable = GridTable;
var rgCount = 0;
var rgIndex = -1;
foreach (var rgRow in rgTable.TableRows)
{
foreach (var rgElement in rgRow.Elements)
{
if (rgElement.Text != null)
{
if (rgElement.Text.Equals(columnHeader))
{
rgIndex = rgCount;
break;
}
}
rgCount++;
}
return rgIndex;
}
我的想法是我的嵌套for循环的东西出现了问题,因为当我让程序运行时返回的rgIndex值是-1,它告诉我for循环中的代码没有被运行。 / p>
TIA, 比尔杨曼
答案 0 :(得分:0)
获取表列索引的代码。您需要传递表(验证调试时表是否存在):
public int GetColumnIndex(Table table, string headerName)
{
ElementCollection headerElements = table.TableRows[0].Elements; //First row contains the header
int counter = 0;
foreach (var header in headerElements)
{
if (header.ClassName != null && header.ClassName.Contains(headerName)) //In this case i use class name of the header you can use the text
{
return counter;
}
counter++;
}
// If not found
return -1;
}