Я использую автоматизацию White UI для тестирования в своем проекте. Я застрял в точке, где мне нужно получить цвет фона элемента управления. Любой пример кода, пожалуйста?
Белая среда автоматизации пользовательского интерфейса: цвет фона
Ответы (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, то вам, к сожалению, не повезло.
Надеюсь это поможет!
Если вы используете тестовое приложение, вы можете создать текстовое поле и привязать текст текстового поля к фону элемента управления. Затем вы можете легко проверить текст текстового поля.
Я предполагаю, что автоматизация белого пользовательского интерфейса не имеет такого свойства, но вы можете получить прямоугольник элемента управления и распознать цвет, используя библиотеки .Net.
Например, для распознавания красной рамки в текстовом поле при вводе неверного значения процесс будет следующим:
- Получите прямоугольник элемента управления с помощью автоматизации пользовательского интерфейса.
- Сделайте скриншот этого прямоугольника, используя библиотеки .Net.
- Пройдемся по всем пикселям с помощью .Net-библиотек и убедимся, что в этом прямоугольнике у нас, например, больше 30 красных пикселей.
Я знаю, что это грубое решение, но это лучше, чем ничего.