2016-08-31 10 views
0

Я пытаюсь автоматизировать настольное приложение с помощью CodedUI. Я становлюсь ниже ошибки, пока я пытаюсь нажать на кнопки. Пожалуйста, предложите мне резолюцию.Coded ui: Еще один элемент управления блокирует управление

{"Another control is blocking the control. Please make the blocked control visible and retry the action. Additional Details: 
TechnologyName: 'MSAA' 
ClassName: 'WindowsForms10.BUTTON' 
ControlType: 'Window'\r\n"} 

Код:

WinWindow SearchButtonWindow = new WinWindow(); 
      SearchButtonWindow.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch); 
      SearchButtonWindow.SearchConfigurations.Add(SearchConfiguration.VisibleOnly); 
      SearchButtonWindow.SearchProperties[WinWindow.PropertyNames.ControlType] = "Window"; 
      SearchButtonWindow.SearchProperties[WinWindow.PropertyNames.ControlName] = "cmdSearch"; 
      //SearchButtonWindow.WindowTitles.Contains("Ascend Retail Management Software"); 
      WinButton SearchButton = new WinButton(); 
      SearchButton.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch); 
      SearchButton.SearchConfigurations.Add(SearchConfiguration.VisibleOnly); 

      SearchButton.SearchProperties[WinWindow.PropertyNames.ControlType] = "Button"; 
      SearchButton.SearchProperties[WinButton.PropertyNames.ControlName]= "cmdSearch"; 

      Mouse.Click(SearchButton); 
+0

Как много других очень похожих вопросов здесь о переполнении стека и других веб-сайтах вы изучали? – AdrianHHH

+0

Я пробовал почти все. Я не нахожу решения, все они обходные пути, такие как получение границ, а затем щелчок, нажатие Enter с помощью KeyBoard. Но проблема с моим приложением заключается в том, что CodedUI показывает окно и кнопку с тем же именем Control и теми же границами. Есть ли способ, которым мы можем нажать кнопку, используя Mouse.Click? –

ответ

0

Из кода я вижу это, SearchButtonWindow не назначается в качестве родителя кнопку Поиск. Большая часть иерархии времени также требуется для однозначного определения элемента управления.

WinButton SearchButton = новый WinButton (SearchButtonWindow);

Кроме того, проверьте дочерние элементы управления SearchButtonWindow с помощью инструмента CodingUI Test Builder (после того, как окно выделено, используйте клавиши со стрелками в правом верхнем углу окна Builder. Клавиша со стрелкой вниз принимает непосредственный первый дочерний элемент выделенного в данный момент элемента управления , где, как стрелка вправо ключ перемещается на братьев и сестер)

0

Попробуйте использовать метод Drawhighlight() и найти тест подсветки ли правильный контроль

0

я работать в этом несколько раз в прошлом. Обычно, когда есть невидимый прозрачный или другой невидимый объект поверх объекта, который вы хотите. Вы можете добраться до объекта, заставив мышь к местоположению объектов, а затем вызывая команду щелчка.

Point? xyPoint = GetCenterPoint(SearchButton); 

if (xyPoint != null) 
{ 
    Mouse.Click((Point)xyPoint); 
} 


public Point? GetCenterPoint(UITestControl objTarget) 
{ 
    Point? _Point = null; 
    try 
    { 
     if (objTarget != null && objTarget.GetProperty(UITestControl.PropertyNames.BoundingRectangle) != null) 
     { 
      double _CenterX = objTarget.BoundingRectangle.X + (objTarget.BoundingRectangle.Width/2); 
      int _PointX = Convert.ToInt32(_CenterX); 
      double _CenterY = objTarget.BoundingRectangle.Y + (objTarget.BoundingRectangle.Height/2); 
      int _PointY = Convert.ToInt32(_CenterY); 
      _Point = new Point(_PointX, _PointY); 
     } 
    } 
    catch (Exception ex) 
    { 
     //Exception Logging Here 
    } 
    return _Point; 
}