2015-07-28 87 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

你能送我一个摄制拉链,我问在上述提到的问题吗?因为我无法根据所提供的代码进行再现,所以我很想深入了解这一点。