2014-09-26 34 views
1

我很難與多列WinList中的單元格(不確定它們是否是真正的單元格)接口。我正在測試一個Windows應用程序。我用多個工具查詢了對話框,控件顯然是WinList而不是WinTable。在CodedUI測試期間與多列WinList控件的單元接口

我想完成三件事情的能力:

1)讀取單元格的值。
2)編輯單元格的值。
3)在一個小區鼠標點擊

我曾嘗試使用下面的代碼能夠做到「從電池讀」(項目1#):

var value = new WinListItem(myGetList(myListId).Items[3]).GetColumnValues()[1]; 

當涉及到編輯或鼠標點擊在一個單元格上,我找不到找到它們的方法。

首先,我想投的WinList作爲WinTable,這樣我可以用更強大的性能WinTable:

var table = (WinTable)(myGetList(myListId)); 

這是失敗的。

我也嘗試實例化使用WinList表:

var table = new WinTable(myGetList(myListId); 

這也是失敗的。

我正在測試一個動態應用程序,並儘量避免使用屏幕座標以及UImap。我發現這些方法缺乏耐久性,並希望儘可能使用代碼。

任何人都可以幫助我實現項目2 & 3從上面使用代碼?

回答

1

UIMap只與其中的代碼一樣耐用。由於有兩個部分類圖(map.designer.cs和map.cs),我會用map.cs部分類,並創建一個對象按步驟1

// Here, you've created a WinListItem 
new WinListItem(myGetList(myListId).Items[3]) 

// so, let's extrapolate that: 
public WinListItem MyListItem(int row, int column) 
{ 
    WinListItem target = new WinListItem(myGetList(myListId).Items[row]); 
    UITestControlCollection columns = target.GetChildren(); 
    return (WinListItem)columns[column]; 
} 

現在以同樣的方式,您可以發送MyWinListItem(3, 1).DisplayText = "blah";Mouse.Click(MyWinListItem(3, 1));執行要求2和3.