2014-07-07 3 views
4

나는 자동화에 pywinauto를 사용하고 있습니다. DiffDaff 소프트웨어의 버튼을 클릭하십시오.수행 방법 버튼이나 텍스트 필드의 클릭 동작은 pywinauto로

내 의도는 다음과 같습니다

  • 1 단계 : 오픈 DiffDaff 소프트웨어

  • 2 단계 : 버튼

    from pywinauto.application import Application 
    
    app = Application.start("C:\Program Files\DiffDaff\DiffDaff.exe") 
    
    app.About.Click() 
    

'정보'를 클릭하지만에있어 2 단계에서 멈추고 콘솔 쇼 오류 :

File "build\bdist.win32\egg\pywinauto\application.py", line 238, in __getattr__ 
    File "build\bdist.win32\egg\pywinauto\application.py", line 788, in _resolve_control 
pywinauto.findbestmatch.MatchError: Could not find 'About' in '['', u'DiffDaff - Compare Files, Folders And Web Pages', u'Internet Explorer_Hidden', u'DiffDaff - Compare Files, Folders And Web PagesDialog', 'Dialog']' 

'', u'DiffDaff - 파일, 폴더 및 웹 페이지 비교 ','Internet Explorer_Hidden ', u'DiffDaff - 파일, 폴더 및 웹 페이지 비교', '대화 상자'는 sotfware의 제목입니다

또한, 명령 'app.dialogs.print_control_identifiers()'을 사용하여 버튼 '정보', 출력이 어떤 정확한 위치를 알고 : L750 여기서 무엇을/(

Button - '&About' (L750, T388, R834, B411) 
    '&About' '&AboutButton' 'Button3' 

을하지만 위와 같이 매개 변수를 이해하는 것이 매우 어렵습니다, T388, ...) - 위와 같이 매개 변수의 모든 평균을 설명 하시겠습니까?

'클릭'버튼을 수행하는 방법은 무엇입니까?

감사합니다.

답변

3

pywinauto에는 Application 개체에서 제어 메서드까지 2 수준 계층 구조가 필요합니다. 모든 통화의 구조는 좀 더 현실적인 클릭이 필요한 경우 귀하의 경우에는

app.<DialogName>.<ControlName>.<Method>(<params>) 

그것이

app.Dialog.About.Click() 

과 같아야하고, 커서를 이동하고 사용자로 컨트롤을 클릭 ClickInput()를 이용하시기 바랍니다. 클릭()은 WM_CLICK 만 전송하며 신뢰성도 떨어집니다.

PrintControlIdentifiers() 메소드 인쇄 다음 정보

<ControlType> - '<Name a la WindowText>' (<rectangle>) 
       possible names which are most likely useful for object attribute access 

언급 코드는 다음과 동등하다 :

app.Window_(best_match='Dialog', top_level_only=True).ChildWindow(best_match='About').Click() 

pywinauto__getattr__ 방법을 대체하여 이러한 구조를 단순화한다.

+0

감사합니다. 작동합니다! "(L750, T388, R834, B411)"이 (- | -) 생성된다는 것을 알고 싶습니다. "& About"& AboutButton ''Button3 ' " –

+0

& About'의 의미는 버튼의 실제 WindowText()입니다. 'Button'은 FriendlyClassName()입니다. '__getattr__' 메쏘드의 가능한 모든 이름은 '', ''및 ' i'의 3 가지 변종이 있습니다. 여기서 _i_는 이러한 유형의 제어 색인입니다. 예를 들어, 첫 번째 단추를 'Button0'또는 'Button1'로 식별 할 수 있으며 두 번째 단추 이름은 'Button2'등이 될 수 있습니다. 이것은 텍스트가 없거나 동일한 경우에 유용합니다. –

+0

"(L750, T388, R834, B411)"은 컨트롤의 절대 화면 사각형입니다.L은 "왼쪽", R - "오른쪽"등을 의미합니다. –