2014-11-06 77 views
1

不知道我要去哪裏錯了:在Sikuli循環故障/ Python的

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個屏幕。我們稱之爲主屏幕和屏幕2。在主屏幕上有相同的按鈕rButton。我想查找所有可見的rButton,然後開始點擊它們。理想情況下,我希望它點擊第一rButton,其花費的畫面2,如果在屏幕2的按鈕被禁用,點擊取消這使我們回主畫面,然後進入主屏幕,再次把我們帶到第二rButton畫面2。根據主屏幕上的rButtons,可以禁用或啓用屏幕2上的按鈕。

我的代碼無法正常工作時這種效果。不知道我哪裏錯了。

+0

你能告訴我們你的代碼走多遠?它在哪裏破裂?你得到的錯誤是什麼? – autoKarma 2014-11-06 22:01:48

回答

1

我不知道你是如何定義的區域「R」,但作爲一個默認,Sikuli不會是原產於OS屏幕以外的位置。您需要首先讓sikuli找到其他屏幕,然後定義該屏幕的邊界。

由於現在看來,你在搜索區域「R」不管你打算什麼屏幕......你應該分別定義兩個屏幕,或Sikuli會不知道切換屏幕查找你想要的按鈕。例如,你可以使用Screen類定義其屏幕是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在多顯示器環境中的Sikuli文檔