don't stop believing

SikuliX 상단 명령 설명 (Region, Location, ...) 본문

Testing Automation/SikuliX

SikuliX 상단 명령 설명 (Region, Location, ...)

Tongchun 2018. 1. 23. 12:44

SikuliX IDE의 상단 명령에 대해서 설명하겠습니다.


화면 갈무리와 이미지 삽입은 말 그대로 입니다.

화면 갈무리는 화면의 특정 영역을 캡처해 IDE 화면에 보여줍니다.

이미지 삽입은 이전에 작업한 이미지를 불러올 수 있습니다.


Region은 영역을 지정하는 것입니다.

화면에서 특정 영역에 대해서만 이미지를 찾고 싶을때 사용합니다. 만약 Nox를 사용해 게임 플레이를 자동화하려고 할때 Nox 화면 영역에서만 이미지를 찾아 동작을 하게할 수 있습니다.


저는 PC 바탕화면에 두 개의 Chrome이 있습니다. Region을 설정하고 Region안에 있는 Chrome으로 마우스를 옮기도록 하겠습니다.

상단 메뉴에 있는 Region을 클릭하고 오른쪽에 있는 Chrome을 포함하도록 영역을 지정합니다.

그리고 hover()함수를 이용해 마우스를 이동 시키겠습니다.

reg라는 변수를 선언한 다음 상단 Region 명령으로 영역을 설정합니다. 영역을 설정할 때 Chrome 아이콘 하나만 포함되게 합니다. 이제 reg 변수에는 Region 영역의 X좌표, Y좌표, 넓이(폭)와 높이 값이 할당됩니다.

Sikuli 스크립트에서 Regin으로 선택한 영역 안에서만 이미지를 찾게 하려면 getROI()로 설정을 해줘야 합니다.

이제 화면에 두 개가 있는 Chrome 아이콘 중 하나를 캡처해 chromeIcon 변수에 넣습니다. 그리고 findAll()함수로 화면에 있는 chrome 아이콘을 찾게 합니다. 화면에는 두 개가 있지만 설정한 Region 안에는 하나가 있기 때문에 갯수는 1개만 표시됩니다.

이렇게 특정 영역을 지정해서 이미지를 찾거나 액션을 해주면 더 정확도가 높은 스크립트를 구성할 수 있습니다.


Nox를 이용해 게임을 자동화 한다면 Nox 영역만큼을 Region으로 지정하면 좋습니다.



다음은 Location입니다.

화면에서 특정 위치의 좌표값을 알고 싶다면 location 명령으로 확인할 수 있습니다.

바탕화면의 그림은 요하네스 페르메이르의 '진주 귀걸이를 한 소녀'입니다. 소녀의 코끝에 마우스를 올려놓고 싶다면 Location으로 좌표를 확인하고 hover()함수 안에 좌표를 넣으면 됩니다.

Location 명령을 클릭하고 원하는 위치가 영역의 가운데 오도록 선택합니다.

가운데 좌표가 화면에 보이면 hover()함수로 마우스를 이동시킬 수 있습니다.


Offset은 Region의 asOffset() 입니다.

asOffset() 함수는 Region 명령으로 특정 영역을 잡았다면 그 영역의 넓이값과 높이값을 X좌표, Y좌표로 반환합니다. 만약 시작점이 X좌표 200, Y좌표 150, 넓이 650, 높이 320인 영역을 Region으로 잡았다면 asOffset()함수는 넓이값과 높이값으로 새로운 Location(650, 320)을 리턴하게 됩니다.

보통 좌표값을 계산할 때 많이 사용합니다.


Show는 스크립트에 작성된 이미지가 화면에 어디 있는지 highlight로 보여줍니다.

Sikuli IDE의 에디트 창 중 찾으려는 이미지가 있는 스크립트 라인에 마우스 커서를 이동하고 Show 명령을 누르면 화면에서 찾아 hightlight로 표시합니다.

highlight()함수는 위 스크립트로 확인할 수 있습니다. 1초간 highlight되다가 꺼지고 1초 후 다시 highlight되는 것을 다섯번 반복합니다.


Show in 명령은 해당 Region 영역 안에서 찾아 highlight 하는 것입니다.


실행 명령은 스크립트를 실행하게 합니다. 천천히 실행은 말 그대로 run in Slow motion 입니다.

참고로 실행을 중지하게 하는 명령은 exit(1)을 사용합니다. 스크립트의 가장 끝에 명시적으로 스크립트를 끝내도록 하기 위해 exit(1)를 추가하면 좋습니다.

eixt() 함수에는 숫자로 리턴 파라메터를 추가할 수 있습니다.


여기까지 상단 명령에 대한 설명이었습니다.


Comments