Белая среда автоматизации пользовательского интерфейса: цвет фона

Я использую автоматизацию White UI для тестирования в своем проекте. Я застрял в точке, где мне нужно получить цвет фона элемента управления. Любой пример кода, пожалуйста?


person Maven007    schedule 21.04.2014    source источник


Ответы (3)


К сожалению, белыми это, вероятно, невозможно. Однако Windows предоставляет некоторые методы, которые могут вам помочь. Если вы используете шпионский инструмент и элемент управления, на который вы смотрите, имеет доступный TextPattern, вы можете получить цвет фона элемента управления.

В частности, вы можете попытаться получить такой шаблон (где myElement имеет тип AutomationElement):

var textPattern = myElement.GetCurrentPattern(TextPattern.Pattern) as TextPattern;

Если вы можете получить экземпляр типа TextPattern, вы можете сделать следующее:

var bgColor = textPattern.DocumentRange.GetAttributeValue(TextPattern.BackgroundColorAttribute)

Это вернет простой старый объект, который вам затем нужно будет распаковать. Если есть несколько цветов фона, он будет равен TextPattern.MixedAttributeValue. В противном случае это будет число типа int, которое соответствует цвету RGB, поэтому приведение должно помочь вам получить нужное значение:

var color = (int) bgColor;

Конечно, если ControlType интересующего вас элемента управления не является Text, то вам, к сожалению, не повезло.

Надеюсь это поможет!

person IDuckworth    schedule 10.03.2017

Если вы используете тестовое приложение, вы можете создать текстовое поле и привязать текст текстового поля к фону элемента управления. Затем вы можете легко проверить текст текстового поля.

person brent.esh    schedule 19.12.2016

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


Например, для распознавания красной рамки в текстовом поле при вводе неверного значения процесс будет следующим:

  1. Получите прямоугольник элемента управления с помощью автоматизации пользовательского интерфейса.
  2. Сделайте скриншот этого прямоугольника, используя библиотеки .Net.
  3. Пройдемся по всем пикселям с помощью .Net-библиотек и убедимся, что в этом прямоугольнике у нас, например, больше 30 красных пикселей.

Я знаю, что это грубое решение, но это лучше, чем ничего.

person drets    schedule 23.04.2014