don't stop believing

Python 제어문(if, for, while) 사용해 보기 본문

Testing Automation/SikuliX

Python 제어문(if, for, while) 사용해 보기

Tongchun 2018. 1. 22. 14:33

SikuliX에서 Python 제어문을 사용하는 것을 배워보겠습니다.

제어문이란 어떤 조건에 부합하는지를 확인해 각기 다른 행동들을 수행하게 하는 것입니다.

Python 제어문의 설명은 아래 링크에 잘 되어 있습니다. (파이썬 기본 교육에도 좋은 사이트 입니다.)

[https://wikidocs.net/19]


예제로 사용할 메일 리스트입니다. 제어문을 이용해서 읽지않은 메일을 확인하는 것 해보겠습니다.


먼저 If문입니다.

[https://wikidocs.net/20]


이름앞에 있는 안읽은 메일 아이콘(이미지)를 findAll() 함수로 찾습니다. 이때 이미지의 Similarity를 0.99로 해야 정확하게 찾아 집니다.

이미지를 클릭하고 매칭 미리보기 탭에서 Similarity를 수정할 수 있습니다.

unread라는 변수에 findAll()함수로 찾은 안 읽은 메일 이미지들을 담습니다. 그리고 unreadCount라는 변수에 unread의 아이템 개수를 담습니다. list()함수는 findAll()로 확인한 이미지들을 list(Arry)형태로 변환합니다. len()함수는 해당 Arry의 갯수를 확인합니다.

실행하면 아래와 같이 결과가 나옵니다.


이번에는 for 문입니다.

[https://wikidocs.net/22]

역시 findAll()함수로 찾은 이미지를 for문으로 하나씩 확인하고 좌표를 이동해 메일을 클릭해 주는 코드입니다.

추가적으로 find(), findAll() 등으로 찾은 이미지의 좌표를 확인할 수 있습니다.

image = find()로 특정 이미지를 찾았다면 해당 좌표와 이미지의 넓이와 높이를 확인할 수 있습니다.

  • image.x: 전체 화면(해상도)에서 찾은 이미지의 왼쪽 위 모서리의 x좌표
  • image.y: 전체 화면(해상도)에서 찾은 이미지의 왼쪽 위 모서리의 y좌표
  • image.w: 찾으려는 이미지 샘플의 넓이(폭)
  • image.h: 찾으려는 이미지 샘플의 높이


마지막으로 while문입니다.

[https://wikidocs.net/21]

while문은 조건이 False가 될때까지 계속 반복하게 됩니다. 그래서 먼저 무한 Loop를 방지해야 합니다.

먼저 running이라는 변수를 선언하고 True를 할당합니다.

그리고 runHotkey()라는 함수를 만듭니다. 이 함수가 호출되면 먼저 선언한 running이라는 변수를 확인하고 False라는 값을 할당하게 됩니다. 이 함수는 addHotkey()의 hendler로 쓰이게 됩니다.

Sikuli 환경설정에 Hotkey를 추가합니다. Env.addHotkey()추가하며 CTRL 키와 F1키를 동시에 누르면 runHotkey()함수가 작동하게 합니다.


while running: 으로 while문을 시작합니다. 가장 첫줄에서 running에 True로 되어 있어서 while문은 False가 될때까지 계속 반복하게 됩니다. 반복문 안에 if문을 사용해 안읽음 이미지가 있다면 좌표를 이동해 메일 제목을 클릭하게 합니다. 만약 안읽음 메일이 없다고 하더라도 while문은 계속 돌아갑니다. 그러다가 시간이 지나 새로운 메일이 발송되면 if문이 다시 작동하게 됩니다.

while문을 중지하고 싶다면 미리 등록한 Hotkey (CTRL + F1)를 눌러 running 변수를 False로 변경하게 합니다. 그럼 while문의 running은 False이 됐으므로 중지하게 됩니다.


만약 while문을 사용하되 무한 Loop를 돌지않게 하려면 아래와 같이 while문 안에 조건을 두개를 넣을 수 있습니다.

두 조건중에 하나라도 False가 되면 while문은 종료됩니다.


이상 Python 제어문 사용 설명이었습니다.


Comments