Свойства строк и ячеек закодированного пользовательского интерфейса HtmlTable имеют значение null
Я пытаюсь автоматизировать тест, пытаюсь достичь HtmlTable
объект, но это не так просто.. Если я добавлю его в UImap
, файл конструктора показывает его как HtmlTable, но я не могу найти его на карте. Если я пытаюсь найти его вручную, это работает, но свойства Rows и Cells равны нулю, но CellCount
а также RowCount
показывают правильные значения. Единственный способ добраться до ячеек - это разделить HtmlTable на два элемента управления HtmlCustom. Первый "TagName
" является "THEAD
"а второй есть"TBODY
".
HtmlCustom parent = new HtmlCustom(htmlTable);
parent.SearchProperties.Add("TagName","TBODY");
parent.SearchProperties.Add("ClassName","HtmlTag.TBODY");
var firstchild = parent.GetChildren();
foreach(var secondchild in firstchild)
{
var thrdchild = secondchild.GetChildren();
foreach (var cells in thrdchild)
{
//do sg
}
}
После разделения я могу получить детей с GetChildren()
функция (в основном строки), но в некоторых случаях GetChildren
возвращается null
.. Я ничего не могу найти по этому вопросу. Что я делаю неправильно?
ОБНОВИТЬ
В основном GetCell
Функция работает правильно и возвращает саму ячейку, но в некоторых случаях (5%) она не может найти ячейку. Так же, как GetChildren
функция. Но это действительно раздражает. Я написал небольшую рекурсивную функцию с блоком try catch, чтобы поймать NullReferenceException
и попытаться получить камеру снова и снова, но это не очень поможет..
2 ответа
Вы можете использовать функции HtmlCell
//for verification
var cell=GetCell(2,1);
//Now you can use the assert class for verification
Assert.areequal("CodedUi ", cell.innertext,"values are not matched");
HtmlCell GetCell(UITestControl parent, int row, int column)
{
var cell= new htmlcell(parent);
cell.Searchproperties.Add(HtmlCell.Propertynames.Rowindex,row);
cell.Searchproperties.Add(HtmlCell.Propertynames.Columnindex,column);
retun cell;
}
Спасибо за ответы.
Наконец я решил проблему. Решено не является правильным словом, но понимает, почему свойства и функции работают так случайно.
Веб-страница, которую я пытаюсь протестировать, содержит некоторые динамические элементы JS, и страница обновляется каждые 3 секунды. Это является причиной неправильного поведения HtmlTable
,
Сейчас пытаюсь как-то отключить это автообновление в браузере.