我的問題是關於以下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;
}
}
如果任何人有關於這個問題的線索,我會很好奇爲什麼。
感謝