Entry Points for Automation
So you have an application, you know it supports one of the mentioned accessibility technologies. What’s the next?
First you should start your application or connect to an existing app instance. It can be done with an Application object.
먼저, 어플리케이션 오브젝트 인스턴스 만들기. 이미 실행된 app에 connect를 하거나, start로 새로 app실행한다.
This is not just a clone of subprocess.Popen,
subprocess.Popen 의 그냥 복사가 아니다.
but an entry point for further automation limiting all the scope by process boundaries.
그러나, 프로세스 바운더리에서 자동화에 제한이 있는 entry point이다.
It’s useful to control potentially few instances of an application (you work with one instance not bothering another ones).
여러 어플리케이션의 인스턴스를 컨트롤하는 것이 유용할 수 있다. 너가 다른 인스턴스를 방해하지 않고, 하나의 인스턴스와 작업하고 싶을때 모듈로 해당 어플리케이션을 지정한다.
from pywinauto.application import Application
app = Application(backend="uia").start('notepad.exe')
# describe the window inside Notepad.exe process
dlg_spec = app.UntitledNotepad
# wait till the window is really open
actionable_dlg = dlg_spec.wait('visible')
If you want to navigate across process boundaries (say Win10 Calculator surprisingly draws its widgets in more than one process) your entry point is a Desktop object.
프로세스 바운더리를 건너가길 원하면, 너의 entry point는 Desktop 오브젝트여야한다. (예로, Window10계산기는 한 프로세스 이상의 여러개 위젯을 그린다)
Python module인 subprocess모듈의 popen으로 자식 프로세스를 생성하고(Shell=True시, 별도 sub shell에서 실행), 데스크탑 오브젝트로 Calculator 인스턴스를 선언한다.
from subprocess import Popen
from pywinauto import Desktop
Popen('calc.exe', shell=True)
dlg = Desktop(backend="uia").Calculator
dlg.wait('visible')
Application and Desktop objects are both backend-specific. No need to use backend name in further actions explicitly.
Application과 Desktop 오브젝트들은 둘다 백앤드 특성이다. 명시적으로 백앤드 이름을 다른 액션들에 쓰지 마라.
Subprocess 모듈 이란?
subprocess 모듈은 파이썬 프로그램 내에서 새로운 프로세스를 스폰하고 여기에 입출력 파이프를 연결하며 리턴코드를 획득할 수 있도록 하는 모듈로, 다른 언어로 만들어진 프로그램을 통합, 제어할 수 있게 만드는 모듈이다. 이 모듈은 기존에 오랜된 몇몇 모듈과 함수(os.system, os.spawn*)들을 대체하기 위해 만들어졌다. (혹은 os.popen 같은 함수도…)
https://soooprmx.com/archives/5932
'Software coding skill(python, web등)' 카테고리의 다른 글
pywinauto 7 - 안정적인 자동화 (0) | 2020.02.11 |
---|---|
pywinauto 6 - listview 내 text 읽기/쓰기 (0) | 2020.02.11 |
pywinauto 5 - 32bit / 64bit app 종류별 환경 설정 (0) | 2020.02.11 |
pywinauto 4 - list select / click (0) | 2020.02.11 |
Pywinauto 3 - Attribute Magic (0) | 2020.02.11 |
Pywinauto 2 - Window Specification (0) | 2020.02.10 |
color script 사용 - code 첨부 글쓰기 (0) | 2020.02.07 |
pywinauto 예제 - 메모장 저장 (0) | 2020.02.07 |