2013-11-20 2 views

답변

2

주어진 이미지/스크린 샷 객체와 관련하여 화면의 특정 영역에서 Sikuli가 작동하도록 지정할 수 있습니다. 이를 TargetOffset이라고합니다. 프로그래밍 방식으로 sikuli를 사용하는 것에 대해 알고 있다고 가정하면 here을 참조하십시오. Sikuli IDE에서 스크린 샷 이미지를 두 번 클릭하면 정확도 및 targetOffset을 설정할 수있는 창이 나타납니다.

1

두 개의 아이콘이 함께 가까운, 항상 같은 방식으로 표시되며, 그들 사이의 공간은 항상 다음

click(imageOfTwoIcons).targetOffset(x,y) 

아마 갈 수있는 가장 간단한 방법입니다, 같은 표시됩니다. 하지만이 방법을 신뢰할 수 없게 만드는 것이 있다면 (두 아이콘 사이의 모든 것이 화면 캡처를 할 때와 다르게 나타납니다) -

또한 python sorted() 함수를 사용하여 그들의 위치에 의하여 심상. 하나 개의 이미지가 다른 위에 항상 예를 ​​들어, 다음 두 이미지를 찾을 수 있으며과 같이, 좌표 자신의 Y별로 정렬 :

#a little prep for the sorted function to get the y coord of the icon 
def byY(icon): 
    return icon.y 

#findAll() on your two identical icons and make them into a list 
bothIcons = list([x for x in findAll(icon)]) 

#then sort them 
sortedIcons = sorted(bothIcons, key=byY) 
iconOnTop = sortedIcons[0] 
iconOnBottom = sortedIcons[1] 

#then click on the one you want 
click(iconOnTop) #or save a line and say: click(sortedIcons[0]) 

동일하게 수행 할 수 있습니다 당신이 관심의 아이콘이 있음을 알고있는 경우 항상 왼쪽 또는 트윈 오른쪽 : 두 개의 아이콘이 함께 화면에 매우 가까운 경우

def byX(yourTwoImages): 
    return image.x 
bothIcons = list([x for x in findAll(icon)]) 
sortedIcons = sorted(bothIcons, key=byX) 
click(sortedIcons[0]) #for the image on the left 

나는 영역 작업보다는이 더 좋아, 또는 아이콘 '위치 적 변화에 대한 가능합니다.

0

버튼 이미지를 확대하여 이미지뿐만 아니라 그 주변의 배경도 포함 할 수 있습니다 (배경이 변경되지 않는다고 확신 할 수있는 경우). 그러나 sikuli가 가운데를 클릭한다는 것을 기억하십시오 버튼이 가운데에 있는지 확인하십시오.

다른 옵션을 사용하여 클릭 오프셋 (http://doc.sikuli.org/tutorials/checkone/checkone.html)이 같은 사용 무언가 :

this.offset = 15;
org.sikuli.script.Region reg = screen.find ("image"). 왼쪽 (this.offset);
screen.click (reg);