我的问题是对以下CodedUI not recognizing HtmlControl when searched within scope of UITestControl instead of BrowserWindow问题的延续。
我遇到了同样的问题,我想知道为什么会这样。以下是我的发现。
BrowserWindow继承自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 :(得分:0)