프로그래밍 기술/소프트웨어 접근성, UI 자동화

[S/W 접근성] AutomationElement 메서드(속성 검색)

언제나휴일 2016. 4. 19. 10:51
반응형

 이번에는 자동화 요소 개체로 속성을 검색하는 메서드를 살펴봅시다.

public Object GetCachedPropertyValue ( AutomationProperty property);

public Object GetCachedPropertyValue ( AutomationProperty propery, bool ignore);

public Object GetCurrentPropertyValue ( AutomationProperty property);

public Object GetCurrentPropertyValue ( AutomationProperty propery, bool ignore);

public AutomationProperty[] GetSupportedProperties ( );

 

 다음은 자동화 요소에 지원하는 속성 컬렉션을 구하고 각 속성 이름과 값을 얻어오는 루틴입니다.

aps = dae.GetSupportedProperties();

foreach (AutomationProperty ap in aps)

{

    Console.Write("{0}:",Automation.PropertyName(ap));

    object value=dae.GetCurrentPropertyValue(AutomationProperty.LookupById(ap.Id));

    Console.WriteLine(value);

}

 

using System;

using System.Windows.Automation;

using System.Windows;

using System.Collections.Generic;

 

namespace 속성_검색

{

    class Program

    {

        static void Main(string[] args)

        {

            AutomationElement ae = AutomationElement.RootElement;

            Rect rect = ae.Current.BoundingRectangle;

            AutomationElement sae;

 

 

            Dictionary<int, AutomationElement> dictionary =

                       new Dictionary<int, AutomationElement>();

            for (int x = 0; x < rect.Right; x = x + 20)

            {

                for (int y = 0; y < rect.Bottom; y += 20)

                {

                    sae = AutomationElement.FromPoint(new Point(x, y));

                    dictionary[sae.Current.NativeWindowHandle] = sae;

                    Console.Write(".");

                }

            }

            Console.WriteLine("요소 개수:{0}", dictionary.Count);

            InvokePattern ip = null;

            AutomationProperty[] aps=null;

            foreach (AutomationElement dae in dictionary.Values)

            {

                aps = dae.GetSupportedProperties();

                foreach (AutomationProperty ap in aps)

                {

                    Console.Write("{0}:",Automation.PropertyName(ap));

                    object value = dae.GetCurrentPropertyValue(

                                AutomationProperty.LookupById(ap.Id));

                    Console.WriteLine(value);

                }

            }

            Console.ReadKey();

        }

    }

}

[소스 3.2] 화면 좌표로 UI 요소 탐색 후 속성 얻어오기


화면 좌표로 UI 요소 탐색 후 속성 얻어오기


반응형