我的问题是关于以下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;
}
}
如果任何人有关于这个问题的线索,我会很好奇为什么。
感谢