2012-05-15 139 views
0

我試圖通過Microsoft.VisualStudio.TestTools.UITesting.HtmlControls.HtmlDiv作爲參數,所以我需要初始化並找到我正在尋找的特定控件(如果可能),但我正在努力弄清楚。正常初始化像這樣做...如何初始化HtmlDiv

HtmlDiv htmlDiv = new HtmlDiv(htmlDocument) // where htmlDocument is of Microsoft.VisualStudio.TestTools.UITesting.UITestControl 
htmlDiv.SearchProperties[HtmlDiv.PropertyNames.Id] = "header"; 

我試圖做這樣的事情......

myFunction(new HtmlDiv(htmlDocument) { 
    SearchProperties[HtmlDiv.PropertyNames.Id] = "header" 
}); 

我得到的錯誤cannot resolve symbol 'SearchProperties'Cannot initialize type 'Microsoft.VisualStudio.TestTools.UITesting.HtmlControls.HtmlDiv' with a collection initializer because it does not implement 'System.Collections.IEnumerable'

有沒有辦法讓這項工作?

回答

0

我無法想出辦法做到這一點,所以我在我的HtmlDocument包裝類中創建了一個方法,它將返回找到的UITestControl。

public class UiHtmlDocument : HtmlDocument { 
    public UiHtmlDocument(UITestControl searchLimitContainer) : base(searchLimitContainer) {} 

    public T searchHtmlElementByAttributeValues<T>(Dictionary<string,string> propertyExpressions) where T : UITestControl, new() { 
     var uiTestControl = Activator.CreateInstance(typeof(T), this); 
     foreach (var propertyExpression in propertyExpressions) { 
      ((T)uiTestControl).SearchProperties[propertyExpression.Key] = propertyExpression.Value; 
     } 
     return (T)uiTestControl; 
    } 
} 

和像這樣使用...

myFunction(
    browserWindow.htmlDocument.searchHtmlElementByAttributeValues<HtmlDiv>(
     new Dictionary<string, string> { 
      { HtmlDiv.PropertyNames.Class, "footer" } 
     } 
    ) 
);