2014-10-14 4 views
1

윈도우 7 (64 비트)에서 MS UIAutomation으로 작업하고 있습니다. UIAutomation 요소를 지속시킬 수 있는지 알고 싶습니다. 그렇다면 무엇을 시작점으로 할 수 있을까요?UIAutomation 요소를 유지할 방법이 있습니까?

내가 생각해 낸 유일한 점은 요소의 RuntimeID이지만 일부 요소에는 ID가 없을 수 있습니다.

간단한 시나리오는 AutomationElement.FromPoint()을 사용하여 화면의 컨트롤에있는 UIAutomation 요소를 찾은 것입니다. 이제는 계속 유지하려고합니다. 다음 번에 "로드 중"으로 쉽게 액세스 할 수 있습니다. 그것은 UIAutomation Element으로 되돌아갑니다.

답변

5

아니요, 자동화 클라이언트에서 UIAutomation 요소를 유지할 수 없습니다. 다음 번에 다시 찾을 수 있도록 요소에 대한 충분한 정보를 저장해야합니다 (사용 가능한 경우 AutomationID 및 컨텍스트가 가장 좋습니다).

이 요소는 (아마도) 다른 프로세스에서 개체에 대한 참조이며 다른 프로세스에서 허용하는 한만 살 수 있습니다. 요소는 창 닫기, 앱 종료 등으로 사라집니다. 메뉴 및 플라이 아웃과 같은 요소는 매우 짧게 유지되며 클라이언트가 알림을 수신 할 때 더 이상 존재하지 않을 수 있습니다.

+0

AutomationID가 없으면 어떻게해야합니까? 그리고 나는 당신이 말하고있는 Context가 무엇인지 모르겠다. 설명해 주시겠습니까? – ResVict

+0

컨텍스트는 전문 용어가 아닙니다 : 자동화 트리에서 요소는 어디에 있습니까? 어떤 다른 속성을 사용할 수 있습니까? 기타? 사용할 수있는 데이터는보고있는 특정 자동화 공급자에 따라 다릅니다. –

+0

오하이오. Element의 고유 한 튜플을 구성하는 특정 속성 집합을 제안 할 수 있습니까? 지금까지는 Root에서 TargetElement까지 자동화 트리의 계층 구조에있는 모든 요소의 ProcessName과 ClassName 만 생각할 수 있었지만 확실히 올바르지 않습니다. – ResVict

관련 문제