don't stop believing

기본 기능 살펴보기 (계산기) 본문

Testing Automation/SikuliX

기본 기능 살펴보기 (계산기)

Tongchun 2018. 1. 5. 10:42

SikuliX를 설치했으니 이제 사용해 봐야죠.

이미지 매칭 툴의 경우 가장 많이 예로 드는게 계산기 입니다.

윈도우의 계산기를 실행해서 수를 더하고 빼봅시다.


SikuliX 폴더에서 runsikulix.cmd파일을 더블클릭해 Sikuli를 실행시킵니다.

왼쪽 메뉴창의 마우스 조작에 click()를 클릭합니다. 그러면 이미지를 캡쳐할 수 있게 화면이 변경됩니다.

그런 다음 모니터의 왼쪽 밑에있는 윈도우 창 이미지를 선택합니다.

그럼 에디터 창에 click()함수 안에 캡쳐한 이미지가 들어가 있는 걸 볼 수 있습니다.

성격급한 우리는 어떤 일이 일어나는지 바로 실행해 볼 수 있습니다.

에디트 창 위에 있는 실행 버튼을 눌러봅니다. 바로 실행할지 저장할지 아니면 취소할지 묻는창이 뜹니다.

저장을 해봅시다. Save all and Run을 클립합니다. 그럼 폴더 선택창이 나옵니다.

Sikuli는 스크립트 뿐만 아니라 캡처한 이미지 파일도 함께 저장되기 때문에 폴더로 저장됩니다. 저는 D 드라이브의 SikuliX 폴더 밑에 Script라는 폴더를 만들고 Calc01이라는 폴더를 생성해 저장했습니다.


저장이 되면 Sikuli가 실행됩니다.

Sikuli는 화면에서 click()함수 안에있는 이미지를 찾습니다. 그리고 마우스를 이동 시키고 클릭하게 됩니다.

클릭이 되셨나요?

로그를 보면 [log] CLICK on L(25,1061)@S(0)[0,0 1920x1080] (530 msec) 라고 나올겁니다. 화면 해상도에 따라 숫자가 다를수도 있습니다.

모니터의 전체 이미지 크기는 1920 X 1080 이네요. X좌표가 0에서 1920이고 Y좌표가 0에서 1080까지인 화면 크기입니다.

모니터의 왼쪽 위 가장 끝 부분의 위치가 0, 0 입니다. 오른쪽 맨 아래 모서리가 1920, 1080인거죠.

로그는 Click해야 할 이미지의 가운데 부분이 전체 화면 중 X좌표 25, Y좌표 1061에 위치해 있다는 의미입니다.

좌표를 알고 화면 해상도만 고정되어 있다면 이미지를 찾지 않고 바로 좌표를 클릭하게도 할 수 있습니다.

실행된 시간은 0.5초 걸렸네요.


저는 위도우에서 계산기를 실행 시킬때 Window + R키를 눌러서 실행창을 열고 calc를 입력해 계산기를 실행시킵니다.

윈도우 10이라 윈도우 이미지만 눌러서는 실행창이 바로 보이지 않네요. 그래서 윈도우 이미지를 우클릭해서 윈도우 메뉴를 뜨게하고 실행을 클릭하게 하겠습니다.


에디트창에 있는 내용을 지우고 rightClick()할수를 선택하고 윈도우 이미지를 캡처합니다. 그냥 clicnk()함수를 rightClick()함수로 수정해도 됩니다. 대소문자는 구분해 주세요.  그리고 실행하면 윈도우 이미지를 찾아서 우클릭을 하게됩니다.


이제 실행 메뉴를 캡처할 차래입니다. 근데 문제가 하나 있네요. 실행 메뉴를 캡처하려는데 Sikuli의 click()함수를 선택하면 윈도우 메뉴가 사라지네요. 이럴땐 Sikuli에서 제공하는 캡처기능을 사용하면 됩니다.

우클릭으로 윈도우 메뉴가 보인 상태에서 Shift + Ctrl + 2를 클립하면 캡처할 수 있습니다. 만약 반응이 없는것 처럼 보인다면 화면 아래 Sikuli 아이콘 (자바 커피 아이콘)을 한번 클릭해 주세요. 그럼 다시 윈도우 메뉴를 캡처할 수 있을 겁니다.

여기까지 잘 되시나요? 실행하면 순서대로 클릭해서 실행창이 실행됩니다.

간혹 실행(R)을 못찾고 설정(N)을 클릭하는 경우가 있습니다. 이건 Sikuli의 패턴 설정에서 다시 확인해 볼 예정입니다.


실행 입력창에 calc를 써야하는데요. 먼저 실행 입력창이 늦게 뜨는 경우가 있습니다. 그래서 실행 입력창이 화면에 나올때 까지 기다르는 함수를 써보겠습니다. Sikuli 왼쪽 메뉴의 찾기에서 wait()할수를 클릭하고 실행창의 입력란을 캡처합니다. 그러면 Sikuli는 화면에 입력란이 보일때 까지 기다리게 됩니다. 보이면 캡처된 이미지(입력란)의 가운데에 포커스를 맞추게 됩니다.


실행창의 입력란에 calc를 쓰고 엔터를 처야겠죠. Sikuli 왼쪽 메뉴창에 키보드 조작이 있습니다. type()함수를 사용할 건데요. 이건 이미지 캡처가 없어서 에디트 창에 바로 입력해도 됩니다.

type("calc"+Key.ENTER)를 입력해 줍니다. 대소문자는 구분해 줘야 합니다.

실행 시키면 계산기가 뜨게 됩니다.

Sikuli는 계산기가 실행되었는지 확인해야 합니다. wait() 함수로 숫자패드가 화면에 보일때까지 기다리게 합니다.

2 더하기 9를 해봅시다. 2와 9, 더하기, 이퀄(=) 이미지를 click()할수로 순서대로 캡처하면 됩니다.


이제 기본기능을 알았으니 sikuli를 어떻게 가지고 놀지 감이 잡히시나요?


저장된 파일을 보면 이미지와 스크립트가 함께 저장된 것도 볼 수 있습니다.


다음은 다른 기능을 알아보겠습니다.





Comments