2015-07-28 4 views
1

Мой вопрос является продолжением следующего CodedUI not recognizing HtmlControl when searched within scope of UITestControl instead of BrowserWindow вопросов.Создание объекта CodedUI на основе UITestControl

У меня такая же проблема, и я хотел бы знать, почему это происходит. Вот мои выводы.

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

вы можете отправить мне REPRO почтовый индекс, как я просил в выше указанный вопрос? Я бы с удовольствием погрузился в это, так как я не смог воспроизвести его на основе кода.

Смежные вопросы