동일한 페이지에 동일한 버튼이 있으며 Sikuli가 그 중 하나만 클릭하길 원하지만 다른 이름의 술 버튼을 클릭하면 끝납니다. 불행히도 버튼 이름은 변경할 수 없습니다. 내가이 상황을 어떻게 처리 할 수 있을지에 대한 제안?Sikuli가 2 개의 동일한 버튼 사이에서 혼란 스럽습니다.
감사합니다.
동일한 페이지에 동일한 버튼이 있으며 Sikuli가 그 중 하나만 클릭하길 원하지만 다른 이름의 술 버튼을 클릭하면 끝납니다. 불행히도 버튼 이름은 변경할 수 없습니다. 내가이 상황을 어떻게 처리 할 수 있을지에 대한 제안?Sikuli가 2 개의 동일한 버튼 사이에서 혼란 스럽습니다.
감사합니다.
주어진 이미지/스크린 샷 객체와 관련하여 화면의 특정 영역에서 Sikuli가 작동하도록 지정할 수 있습니다. 이를 TargetOffset이라고합니다. 프로그래밍 방식으로 sikuli를 사용하는 것에 대해 알고 있다고 가정하면 here을 참조하십시오. Sikuli IDE에서 스크린 샷 이미지를 두 번 클릭하면 정확도 및 targetOffset을 설정할 수있는 창이 나타납니다.
두 개의 아이콘이 함께 가까운, 항상 같은 방식으로 표시되며, 그들 사이의 공간은 항상 다음
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
나는 영역 작업보다는이 더 좋아, 또는 아이콘 '위치 적 변화에 대한 가능합니다.
버튼 이미지를 확대하여 이미지뿐만 아니라 그 주변의 배경도 포함 할 수 있습니다 (배경이 변경되지 않는다고 확신 할 수있는 경우). 그러나 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);