don't stop believing

SikuliX IDE 기본 명령 확인 본문

Testing Automation/SikuliX

SikuliX IDE 기본 명령 확인

Tongchun 2018. 1. 18. 14:01

Sikuli IDE에서 사용하는 기본 명령에 대해 확인하겠습니다.

Sikuli 폴더에서 runsikulix.cmd을 클릭하면 기본 IDE화면이 보이게 됩니다.


왼쪽에 있는 메뉴들에 대해서 하나씩 설명하겠습니다.


find()

화면에서 찾으려는 이미지의 좌표를 가저옵니다.

바탕화면의 아이콘이나 게임의 버튼 등의 이미지를 Sikuli가 찾고 전체 화면(해상도)에 대해 찾으려는 이미지의 가장 가운데 좌표를 찾아줍니다. 제 바탕화면에 있는 Nox 아이콘을 찾아 보겠습니다.

test라는 변수를 선언하고 find()함수로 바탕화면에 있는 nox아이콘을 찾습니다. 그리고 print로 test 변수의 내용을 확인해 봅니다.

메시지 창에 test변수가 가지고 있는 값이 보이네요.

찾으려는 Nox 이미지는 해상도가 가로 1920, 세로 1080인 화면에 x좌표 231, y좌표 307에 존재합니다.

이미지를 찾는데 248ms(0.2초)가 걸렸다고 하네요.


Sikuli는 찾으려고 하는 이미지를 모두 좌표로 확인해 처리하게 됩니다.


findAll()

화면에 있는 동일한 이미지를 모두 찾습니다. 만약 바탕화면에 크롬 이미지가 여러개 있거나 게임에서 동일한 이미지가 각 캐릭터 머리 위에 있을때 이 이미지들을 모두 찾아서 처리할 수 있습니다.

저는 바탕화면에 3개의 크롬 아이콘이 있습니다. findAll()함수로 찾아봅시다.

chromes라는 변수를 선언하고 findAll()로 찾은 크롬 아이템의 데이터를 할당합니다.

python의 for 문으로 각각의 데이터를 확인할 수도 있고 len()함수로 몇개를 찾았는지도 확인할 수 있습니다.


wait()

아이템을 찾을때 까지 기다리라는 명령입니다.

브라우저에서 다른 화면이 로딩되거나 게임에서 장면이 바뀌는 경우 찾으려는 이미지가 나타날때 까지 기다립니다. 

바탕화면에 있는 Chrome 아이콘을 찾아 더블클릭을 합니다. 저는 기본 페이지가 Google화면입니다. 브라우저가 정상적으로 실행 되었는지 확인하기 위해 Google이미지가 나타날때 까지 기다립니다.

wait()한수에서 기다리는 기본 시간은 3초 입니다. 3초 안에 원하는 이미지가 나타나지 않으면 에러를 반환하게 됩니다. 3초가 짧다면 이미지 다음에 원하는 숫자(초)를 넣으면 그때까지 기다립니다.

참고로 함수와 함수 (액션과 액션)사이에 어느정도 시간 간격을 주고 싶다면 sleep()함수를 사용할 수 있습니다. sleep(30)은 바로 위 함수()가 성공한 이후 아무것도 하지 말고 30초 동안 기다리라는 명령입니다.


waitVanish()

원하는 이미지가 사라질때까지 기다리라는 명령입니다.

이것도 wait()과 같이 화면이 변경되거나 게임에서 아이콘이 사라지는 것을 감지하게 됩니다.

Chrome을 실행시키면 첫 페이지가 Google 검색 페이지라 Google로고가 보이게 됩니다. 만약 다른 페이지로 이동한다면 Google로고가 화면에서 사라지게 되서 다음 명령으로 넘어가게 됨니다.

마찬가지로 이미지가 사라질때 까지 기본 3초동안 기다리고 더 기다리게 하고 싶은때는 원하는 숫자를 추가하면 됩니다.


exists()

찾으려는 이미지가 있다면 True, 없다면 False를 반환합니다.

True, False를 반환하기 때문에 if 문에 사용하기 좋습니다. "만약에 찾으려는 이미지가 있다면 어떻게 하고 없다면 어떻게 해라", 라고 스크립트를 작성할 수 있습니다.


저는 바탕화면에 Nox 아이콘이 있습니다. Nox에는 성능 테스트에 확인하려고 FriendsRacing이 설치되어 있습니다.

noxIcon과 friendsRacingIcon 변수를 만들고 이미지를 할당해 놓습니다.

find()함수로 바탕화면의 Nox 아이콘을 찾습니다. 마우스 커서를 아이콘으로 옮긴 다음 더블클릭 합니다. click()이나 doubleClcik()을 사용하기 전에 hover()함수로 마우스 포인터를 해당 이미지 위로 이동시키는 것이 좋습니다. Click()과 doubleClick()함수도 마우스를 옮겨 클릭하지만 마우스가 (미세하게)움직일때는 클릭이 제대로 먹지 않을때가 있습니다.

Nox가 실행되면 Nox 바탕화면의 두 아이콘(Help와 ES File  Explorer)가 보일때까지 기다립니다. Nox가 로딩하는 시간을 감안해서 최고 30초까지 기다립니다. 

그리고 FriendsRacing 아이콘이 있다면 더블클릭 해줍니다. 만약 아이콘이 보이지 않는다면 메시지를 프린트 해줍니다. "You need to install a FriendsRacing."


click()

이미지를 찾아 클릭합니다.

작은 팁이라면 click()이나 doubleClick()함수를 사용할때는 마우스가 이미지 중앙에 올때까지 기다려 줘야 합니다. hover()함수를 사용하면 도움이 됩니다.


doubleClick()

이미지를 찾아 더블클릭합니다.


rightClick()

이미지를 찾아 우클릭합니다.

우클릭을 했다면 해당 메뉴에 대해서도 find()나 click()함수를 연이어 사용해야 할 수 있습니다.


hover()

마우스 포인터를 이미지 위로 이동합니다.


dragDrop()

이미지를 찾아 dragdrop으로 이동시킵니다.

바탕화면의 Chrome 아이콘을 휴지통에 넣고 싶습니다. 또는 특정 좌표로 이동시키고 싶습니다.

chrome과 trashBin 변수를 선언하고 이미지를 할당합니다.

chrome 이미지를 find()함수로 찾고, hover()함수로 마우스를 이동시킵니다. 그리고 dragDrop()함수로 chrome 이미지를 휴지통 이미지의 가운데 위치까지 드레그엔드롭 합니다.

만약 특정 좌표로 옮기고 싶다면 Location()함수를 사용해 특정 위치를 정합니다. dragDrop()함수의 두번째 파라메터 위치에 좌표가 할당된 변수를 넣습니다. 그러면 해당 위치로 Chrome 아이콘을 이동시키게 됩니다.


type()

키보드를 타이핑 합니다.

Google검색창에서 www.ngle.co.kr을 입력해 봅시다.


Enter나 Tab, ESC 같은 키를 사용하고 싶다면 Key.ENTER, Key.TAB, Key.ESC 등으로 사용하면 됩니다.

http://doc.sikuli.org/keys.html


type()함수는 찾으려는 이미지와 text를 같이 사용할 수 있습니다.

위 스크립트를 아래와 같이 한번에 사용할 수 있습니다.


paste()

입력한 텍스트를 붙여넣기 입니다.

type()과 다른점은 Enter나 Tap같은 키가 같이 동작하지 않습니다. 그래서 따로 써줘야 합니다.


type()과 마찬가지로 찾으려는 이미지와 함께 사용할 수 있습니다.


여기까지 SikuliX IDE 기본 명령에 대한 설명이었습니다.


Comments