2014-11-06 5 views
1

확실하지가 :반복 문제/파이썬

mm = list(r.findAll(rButton))# find all rButtons on main screen 
print len(mm) #check how many are detected 
for x in range(0,len(mm)): 
    r.click(mm[x]) 
    if(not r.exists(rButtonDisabled)): 
     print "this is a test" 
     r.wait(BeginTask,FOREVER) 
     r.click(BeginTask) 
     r.wait(rButton,FOREVER) 
    else: click(Cancel) 

2 개 화면이 있습니다. 기본 화면과 screen2라고합시다. 메인 화면에는 동일한 버튼 인 rButton이 있습니다. 모든 보이는 rButton을 찾아서 클릭하기를 원합니다. 이상적으로는 screen2에있는 첫 번째 rButton을 클릭하고 싶습니다. screen2의 버튼이 비활성화 된 경우 취소를 클릭하면 메인 화면으로 다시 이동 한 다음 주 화면의 두 번째 rButton으로 이동합니다. screen2. 주 화면의 rButton에 따라 screen2의 단추를 비활성화하거나 활성화 할 수 있습니다.

내 코드가 효과가 작동하지 않습니다. 내가 어디로 잘못 가고 있는지 확실하지 않습니다.

+0

당신이 당신의 코드를 얻는 방법까지 말씀해 멀티 모니터 환경에 Sikuli 문서? 어디에서 깨지나요? 오류는 무엇입니까? – autoKarma

답변

1

지역 'r'을 어떻게 정의했는지는 확실하지 않지만 기본적으로 Sikuli는 OS가 아닌 화면을 검색하지 않습니다. 먼저 sikuli가 다른 화면을 찾은 다음 해당 화면의 범위를 정의해야합니다.

의도 한 화면이 무엇이든 관계없이 'r'지역을 검색 중입니다 ... 두 화면을 따로 정의해야합니다. 또는 Sikuli가 원하는 단추를 찾기 위해 화면을 전환하는 것을 모릅니다. . 예를 들어, which--되는 화면을 정의하기 위해 화면 클래스를 사용할 수 있습니다

numScreens = getNumberScreens() 
r = SCREEN #in all caps, this is the reserve word for the whole screen native to the OS 
    #can also use r = Screen(0) 
if numScreens > 0 #make sure second screen was counted by sikuli 
    r2 = Screen(1).getBounds() 
else: raise the appropriate error 

#Here's your code with some adjustments for multiple monitors 
#on main screen 
mm = list(r.findAll(rButton))# find all rButtons on main screen 
print len(mm) #check how many are detected 
for x in range(0,len(mm)): 
    r.click(mm[x]) 
    #on secondary screen 
    if(not r2.exists(rButtonDisabled)): 
     print "this is a test" 
     r2.wait(BeginTask,FOREVER) 
     r2.click(BeginTask) 
     #back to main screen 
     r.wait(rButton,FOREVER) 
    #click the cancel button on secondary screen 
    else: r2.click(Cancel) # <-- the defining region was missing here in your original code 

Here's