2014-11-06 85 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文档