0

我嘗試自動化測試,嘗試達到HtmlTable對象,但並不那麼容易..如果將它添加到UImap,設計器文件將其顯示爲HtmlTable,但我無法從地圖中找到它。 如果我嘗試手動找到它,它將起作用,但行和單元屬性爲空值,但CellCountRowCount顯示正確的值。 我可以到達單元格的唯一方法是將HtmlTable分隔爲兩個HtmlCustom控件。 第一個的「TagName」是「THEAD」,第二個是「TBODY」。編碼的UI HtmlTable的行和單元格屬性爲空

 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 .. 我不能找到有關這個問題的任何東西。我究竟做錯了什麼?

UPDATE

晴的GetCell功能工作正常,並返回細胞本身,但在少數情況下(5%),但無法找到該單元格。就像GetChildren函數一樣。但這真的很煩人。 我寫了一個小遞歸函數有try catch塊趕上NullReferenceException並嘗試一次又一次得到的細胞,但不會有很大的幫助..

+0

您可能需要調整搜索屬性並使您的表能夠找到。無需製作HtmlCustom。如果你的頁面只有一個表格,那麼一個簡單的方法就是從SearchFilter中刪除所有的內容,而在SearchProperties中只保留TagName爲「Table」並刪除其他搜索屬性。它一定會拍攝到表格。之後'GetCell'和'GetRow'應該正常工作。 – SarkarG

+0

我沒有任何搜索屬性。我可以手動定位表格,問題是單元格和行是空的。 RowCount和CellCount正常工作。 – fota666

回答

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; 
} 
+0

如果你有父(必須是表控件),你有相同的方法 - 父母上的「GetCell」,你不需要自己寫... – barakcaf

+0

我寫了我自己的GetCell函數,但HtmlTable有他自己的GetCell屬性。它們都不起作用。 GetCell屬性拋出一個NullReference異常,我的手寫GetCell方法不做任何事情並返回null。 – fota666

0

感謝您的回答。

最後我解決了這個問題。解決不是一個正確的詞,但明白爲什麼屬性和功能如此隨機地工作。

我試着測試的網頁有一些動態JS元素,頁面每3秒刷新一次。這是HtmlTable不規則行爲的原因。

現在我嘗試以某種方式在瀏覽器中禁用此自動刷新。

相關問題