Перейти к содержимому

Фотография

UI Automation и Цвет элементов

UI Automation

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Kseniya78

Kseniya78

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 09 июля 2015 - 11:57

Всем привет.
Занимаюсь написанием автотестов для приложения на С++. Применяю UI Automation.
Обыскала все возможные форумы и не нашла решения проблемы.
Есть элемент, в UI Spy отображается как:

ClassName:    "Button"

ControlType:    "ControlType.Button"
Culture:    "(null)"

LocalizedControlType:    "button"
По тесту после нажатия кнопки цвет ее должен менятся. Но как получить цвет не знаю.
В исходниках тестируемого приложения нашла код, задающий цвет кнопки, в зависимости от состояния системы, значит это не картинка и цвет можно получить?
Нужна помощь в решении проблемы.


  • 0

#2 stezz

stezz

    Новый участник

  • Members
  • Pip
  • 17 сообщений


Отправлено 09 июля 2015 - 14:08

Попробуйте Inspect.exe. (входит в различные Windows Kits)

Он дает очень много информации про контрол.

Наверняка найдете параметр.

 

ps добавил 7z файл в аттач.

Прикрепленные файлы

  • Прикрепленный файл  inspect.7z   88,79К   3 Количество загрузок:

  • 1

#3 Kseniya78

Kseniya78

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 10 июля 2015 - 05:44

Попробуйте Inspect.exe. (входит в различные Windows Kits)

Он дает очень много информации про контрол.

Наверняка найдете параметр.

 

ps добавил 7z файл в аттач.

Спасибо!
Но это решение мне не помогло. Inspect показывает теже свойства, что и Spy++ или UISpy.


  • 0

#4 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 10 июля 2015 - 08:01

Насколько я знаю, в UI Automation нет информации о цветах объектов. Вообще.

 

Возможные решения зависят от того, на чем вы пишете. Например, можно сделать скриншот кнопки и получить цвет оттуда.


  • 0

#5 stezz

stezz

    Новый участник

  • Members
  • Pip
  • 17 сообщений


Отправлено 10 июля 2015 - 09:43

А нет возможности выложить форму с кнопкой?


  • 0

#6 Kseniya78

Kseniya78

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 10 июля 2015 - 12:18

Спасибо за внимание и советы.
№ день поисков не увенчался успехом. В итоге воспользовалась советом modbear. Пишу на C#.
Может кому полезно будет:
 

public static Color FirstStep(Bitmap orig)
{
Bitmap bmp = new Bitmap(1, 1);

using (Graphics g = Graphics.FromImage(bmp))
{
 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
 g.DrawImage(orig, new Rectangle(0, 0, 1, 1));
}
Color pixel = bmp.GetPixel(0, 0);
return pixel;
}

System.Windows.Rect boundingRect1;
protected readonly AutomationElement _element;
object boundingRectNoDefault = _element.GetCurrentPropertyValue(AutomationElement.BoundingRectangleProperty, true);
if (boundingRectNoDefault == AutomationElement.NotSupported)
{
 Log.Warning("Failed get elemnt promary color");
}
else
{
 boundingRect1 = (System.Windows.Rect)boundingRectNoDefault;
 System.Drawing.Rectangle bounds = new System.Drawing.Rectangle((int)boundingRect1.Left, (int)boundingRect1.Top, (int)boundingRect1.Right - (int)boundingRect1.Left, (int)boundingRect1.Bottom - (int)boundingRect1.Top);

 var result = new System.Drawing.Bitmap(bounds.Width, bounds.Height);
 using (var g = System.Drawing.Graphics.FromImage(result))
 g.CopyFromScreen(new System.Drawing.Point(bounds.Left, bounds.Top), System.Drawing.Point.Empty, bounds.Size);
 System.Drawing.Color primarycolor = PictureAnalysis.FirstStep(result);
 var deltaE = CompareColors(primarycolor, System.Drawing.Color.Black);
 var eps = new System.Drawing.Imaging.EncoderParameters(2);
               
}

  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных