2011-10-18 4 views
0

한 번에 사용 가능한 닫기 단추가 있고 다른 메뉴에서 사용되지 않는 테스트중인 프로그램이 있습니다. 두 지점 UISpy 방송 '의 IsEnabled가'참 '으로 UIAVerify은'참 '최초 시점'의 IsEnabled '을 나타내고, 두 번째의'거짓 'UISpy 및 UIA 동일한 프로그램에서 다른 속성 값 표시 확인

후자 I 육안으로 확인할 수있는 무엇인가 될 사실, 프로그래밍 방식으로 UISpy와 동일한 값을 얻고 있고 테스트 케이스가 실패하고있다.

using System.Windows.Automation;

트리 구조 닫기 "대화", "programName을" "제목 표시 줄" "programName을" "버튼" ""

이 원인이 될 수있는 것을 알고 누구인가? UIA Verify가 UISpy와는 다른 라이브러리를 사용합니까? UIA는 2.0를 확인

+0

는 UISpy 트리를 캐싱 될 수 있습니까? 처음으로 요소 세부 사항을 한 번 가져오고 두 번째 동일한 요소를 선택하면 동일한 정보를 다시 표시 할 수 있습니다. UISpy가 현재 값을 표시하게하는 데 사용할 수있는 "새로 고침"버튼 또는 이와 유사한 것이 있는지 확인하십시오. – BrendanMcK

+0

이 경우가 아니라면, 내 자신의 자동화는 캐시 정보에 의존하지 않고 실시간으로 요구에 따라 정보를 가져오고, 여전히 uispy가 보여주는 것과 동일합니다. 또한 프로그램이 'isEnabled'- 거짓 상태에있는 후에 uispy가 시작되면 uispy는 여전히 그것이 사실이라고보고합니다. –

+0

C++ MFC 응용 프로그램이 있습니다. 그것은 몇 가지 탭 페이지와 탭 컨트롤이 있습니다. 나는 win2k3에있다. UISpy는 해당 컨트롤의 자동화 ID를 표시하지만 UIAVerify는 표시하지 않습니다. 나는 UIAVerify와 마찬가지로 탭 컨트롤을 인식하지 못하는 White 프레임 워크를 사용하고 있습니다. Spy and Verify는 분명히 다르게 라이브러리를 사용합니다!. Xeno는 두 사람이 컨트롤을 찾기 위해 사용하고있는 라이브러리를 찾았습니까?미리 감사드립니다. – user96403

답변

0

윈도우 7 나란히 UIA 3.0 업데이트에 출시 된 새로운 네이티브 COM의 UIA 라이브러리를 사용하여 (또한 사용할 수 Vista 및 XP SP3에 대한 별도의 핫픽스 KB971513 등). 반면 UISpy는 원래 관리 API를 사용한다고 생각합니다.

.isEnabled().invoke() 메서드를 사용하여 관리되는 라이브러리에 간헐적으로 문제가 발생했습니다.이 방법은 관리되는 라이브러리보다 전반적으로 더 안정적이며 빠른 COM 라이브러리로 마이그레이션하여 해결할 수있었습니다.

나는 이상 마이그레이션하는 프로세스의 세부 사항을 기억하지 수 있지만, 기본적으로 당신은 당신의 .NET 응용 프로그램이 기본 UIA 메소드를 호출 할 수 interop에 DLL을 생성해야합니다. 그런 다음 선택적으로 자체 래퍼 라이브러리를 만들거나 아래에 언급 된 래퍼 라이브러리 중 하나를 사용할 수 있습니다.

나는 전환을 제작에 도움이 참조 권하고 싶습니다 :

  • UI Automation COM-to-.NET Adapter를 - 초기 시도를 COM API에 대한 래퍼를 작성에서. 나는 이것을 사용하여 문제를 바로 잡았지만 초기에 살펴 보는 것이 도움이되었습니다. 또한이 래퍼 개발자가 작성한 COM API에 대한 MSDN 지원 포럼 게시물을 검색하십시오. 불행히도 내 낮은 StackOverflow 담당자 (오랜 시간 lurker, 처음으로 answerer) 때문에 그들에게 연결할 수 없습니다.

  • UIA Verify Source Code - 소스 코드에 COM 인터페이스에 액세스하는 데 사용되는 UIAComWrapper가 있음을 알 수 있습니다. 또한 프로젝트에서 interop DLL을 어떻게 생성하는지 살펴볼 수 있습니다.