2010-05-13 3 views
2

저는 데스크톱에 많은 유사한 창을 만들 수있는 GUI 응용 프로그램을 가지고 있습니다. 모든 창에는 동일한 제목이 있습니다. 같은 제목으로 모든 대화 상자를 열거하고 각 대화 상자에 대해 몇 가지 테스트를 수행해야합니다.pywinauto : 하나 이상의 응용 프로그램 창을 가지고 있습니다.

나는 호출하는 경우 :

dialog = app['Window Name'] 

pywinauto 이름으로 컨트롤을 접근과 함께 유용한 WindowSpecification 개체를 반환합니다.

내가 전화 할 때 :

dialogs = app.windows_(title='Window Name') 

pywinauto 나에게 그렇게 유용하지 HwndWrapper 인스턴스의 목록을 반환합니다.

지정한 제목이 있지만 WindowSpecification 객체로 창 목록을 얻는 방법은 무엇입니까?

답변

4

당신은 정말로 할 수 없습니다. WindowSpecification은 제공된 기준과 일치하는 모든 창에 대한 단일 사양입니다. WindowSpecification 인스턴스로 작업 할 때 종종 WindowSpecification이 찾고있는 HwndWrapper 인스턴스와 상호 작용합니다. 그래서

나는 대답은 HwndWrapper의 app.windows_ (에 의해 반환) (WindowSpecification.WrapperObject()

주에 의해 반환 된 단일 HwndWrapper와 유사한 작업을 생각 - 당신은 항상 좁혀하려고하는 경우 윈도우의 특정 컨트롤을보고 창 목록을보고 - 응용 프로그램 [ 'Window Name'] [ 'Unique Control Name']을 사용하여 창을 반환해야합니다 ..

WindowSpecification과 HwndWrapper의 주요 차이점은 HwndWrapper 인스턴스가 특정 기본 윈도우 핸들을 반영하는 동안 WindowSpecification은 아직 존재할 필요가 없습니다 .WindowSpecification이 기다리는 코드를 구현할 수 있습니다 윈도우가 있는지 또는 존재하는지를 확인합니다. HwndWrapper와

+0

나는 이 HwndWrapper에서 WindowSpecification로 이동하는 방법이 있나요 대화 [ '창'] [ '제어']와 같은 액세스 제어 등의 사전 항목을 캔트? . 이것은 WindowSpecification을 생성합니다 : (hwnd_wrapper_instance.handle { '핸들') 그에만 일치 당신은 할 수 WS = WindowSpecification은 - 내 창 :( –

+0

네 부모를 모두 같은 그래서 어차피 검색 및 점프입니다 하나의 대화 상자/컨트롤 (특정 핸들이 있음). – markm