2017-02-28 3 views
1

는 I은 docspywinauto : wrapper_object()에 의해 주어진 메모리 위치 문자열을 사용하는 방법?

실제 검색 창에 wrapper_object() 메소드에 의해 수행되는 것을 발견했다. 은 실제 기존 창/컨트롤에 대한 래퍼를 반환하거나 ElementNotFoundError를 발생시킵니다. 이 랩퍼는 작업을 보내거나 데이터를 검색하여 창/제어를 처리 할 수 ​​있습니다.

>>> dlg_spec.wrapper_object() 
<pywinauto.controls.win32_controls.DialogWrapper object at 0x05639B70> 

0x05639B70 무엇입니까? 그리고 예를 들어 포함 된 내용을 인쇄하려면 어떻게해야합니까? (예 : print(0x05639B70))

[편집] 사실은 객체의 메모리 위치 (주소)이기 때문에 (Juan 덕분에) 그것을 클릭 할 수 있습니까? 방법? 이 파이썬 때문에

+1

'0x05639B70'은 해시가 아니며 객체의 메모리 위치 (주소)는 –

+0

입니다. @JuanT 덕분에 여러분이 찾고있는 부분이되었습니다! –

답변

1

당신은 개체의 가능한 모든 방법을 나열 할 수 있습니다 : 때로는 그 의미는 한 번의 클릭보다 다르기 때문에

print(dir(dlg_spec.wrapper_object())) 

일부 컨트롤이 방법을 .invoke()가있을 수 있습니다. 그래서 우리는 이것을 .invoke()으로 남겼습니다. 컨트롤의 텍스트 (Inspect.exe에서 "이름"속성)를 검색하기위한

:

print(dlg_spec.window_text()) 

예, 기본 인쇄 텍스트 대신의 주소로 개선 될 수있다. 이것을 기억하기 위해 issue #322을 추가했습니다.

+0

감사합니다 (다시!) 나는 그걸 알기를 원합니다. 그것은 좋지만 나는 주어진 메모리 위치 문자열을 어떻게 사용할 수 있는지 아직도 이해하지 못한다. (0x05639B70)을 사용하는 몇 가지 코드 예제를 제공해 주시겠습니까? (0x05639B70) 인쇄 (ditto.ditto.SysListView321.GetItem (3)) 사용하여 ListView 항목의 메모리 개체를 경우. '.click (0x05639B70)'이나'.0x05639B70.select()'와 같은 것을 어떻게하면 될까요? –

+0

이 메모리 주소를 사용할 필요가 없습니다. 파이썬 객체에 대한 내부 정보입니다. –

+0

답장을 보내 주셔서 감사합니다. 나는 그 기억 장소에 대해 더욱 혼란 스럽다. –