我尝试自动化测试,尝试访问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
并尝试一次又一次地获取单元格,但它不会帮助很多..
答案 0 :(得分:0)
您可以使用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;
}
答案 1 :(得分:0)
感谢您的回答。
最后我解决了这个问题。解决不是一个正确的词,但理解为什么属性和功能如此随机地工作。
我尝试测试的网页有一些动态JS元素,页面每3秒刷新一次。这是HtmlTable
的不正常行为的原因。
现在我尝试在浏览器中以某种方式禁用此自动刷新。