Свойства строк и ячеек закодированного пользовательского интерфейса 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,

Сейчас пытаюсь как-то отключить это автообновление в браузере.

Другие вопросы по тегам