2015-07-28 88 views
1

我的問題是關於以下CodedUI not recognizing HtmlControl when searched within scope of UITestControl instead of BrowserWindow問題的延續。基於UITestControl的CodedUI對象創建

我遇到同樣的問題,我想知道爲什麼會發生這種情況。這是我的發現。

BrowserWindow從ApplicationUnderTest繼承,ApplicationUnderTest繼承自ApplicationBase,該繼承自UITestControl。

作爲HtmlRow的所有控件都包含一個構造函數,作爲參數請求UITestControl。根據經驗,我可以確認,如果您通過示例HtmlDiv或BrowserWindow的實例,則無論如何,控件都將構造並正確運行。

這是一個奇怪的行爲,我無法解釋,需要更多的分析。

我看到,我可以複製相同的有以下情況:

private readonly UITestControl _container; 

protected Page(Process process) 
{ 
    _container = BrowserWindow.FromProcess(process); 
} 

protected Page(UITestControl testControl) 
{ 
    _container = testControl; 
} 

public UITestControl Container 
{ 
    get { return _container; } 
} 

private HtmlEdit _startDateTextBox; 

protected HtmlEdit StartDateTextBox 
{ 
    get 
    { 
     if (_startDateTextBox == null) 
     { 
      _startDateTextBox = new HtmlEdit(Container); 
      _startDateTextBox.SearchProperties.Add(HtmlControl.PropertyNames.Id, StartDateTextBoxId, 
       PropertyExpressionOperator.Contains); 
     } 

     return _startDateTextBox; 
    } 
} 

這個例子失敗,同時,我希望它應該工作如下例正常工作:

private readonly BrowserWindow _container; 

protected Page(Process process) 
{ 
    _container = BrowserWindow.FromProcess(process); 
} 

public UITestControl Container 
{ 
    get { return _container; } 
} 

private HtmlEdit _startDateTextBox; 

protected HtmlEdit StartDateTextBox 
{ 
    get 
    { 
     if (_startDateTextBox == null) 
     { 
      _startDateTextBox = new HtmlEdit(Container); 
      _startDateTextBox.SearchProperties.Add(HtmlControl.PropertyNames.Id, StartDateTextBoxId, 
       PropertyExpressionOperator.Contains); 
     } 

     return _startDateTextBox; 
    } 
} 

如果任何人有關於這個問題的線索,我會很好奇爲什麼。

感謝

回答

0

你能送我一個攝製拉鍊,我問在上述提到的問題嗎?因爲我無法根據所提供的代碼進行再現,所以我很想深入瞭解這一點。