Python Sikuli:for循环/if-else语句工作不正常

Python Sikuli:for循环/if-else语句工作不正常,python,for-loop,sikuli,Python,For Loop,Sikuli,我在Sikuli中有以下代码,用于执行复制和粘贴任务。当caption.png不存在时,我希望它执行“if not exists”中的操作,但有时即使它不存在,它仍在尝试查找它,并返回一个错误,该错误表示“can't find caption.png” 我尝试了下面的方法,它成功了,但其他一些方法不能正常工作:有时它会随机跳转一个idx。不明白为什么: for idx in range(1, 77): if not exists("caption.png"):

我在Sikuli中有以下代码,用于执行复制和粘贴任务。当caption.png不存在时,我希望它执行“if not exists”中的操作,但有时即使它不存在,它仍在尝试查找它,并返回一个错误,该错误表示“can't find caption.png”

我尝试了下面的方法,它成功了,但其他一些方法不能正常工作:有时它会随机跳转一个idx。不明白为什么:

    for idx in range(1, 77):
        if not exists("caption.png"):
            click("1406907972716.png")
            type(Key.PAGE_DOWN)        
            print "skip" + str(idx)
        else: 
            if exists("caption.png"):
                click("caption.png")
                type(Key.F2)
                type("a", KeyModifier.CTRL)
                type("c", KeyModifier.CTRL)
                click("CLICKBOX-4.PNG")
                click("BOX2-4.PNG")
                type("a", KeyModifier.CTRL)
                type(Key.DELETE)
                type("v", KeyModifier.CTRL)
                type(str(idx))
                type(Key.HOME)
                for i in range(25):
                    type(Key.DELETE)
                click("1406907972716.png")
                type(Key.PAGE_DOWN)

你想在Sikulide做这个吗?存在的问题是,并不总是提供良好的回溯

在第二个示例中,您似乎完全跳过了索引,可能是因为找不到标题,所以没有执行任何内容,而是跳转到下一个迭代。这是在没有输出的情况下跳过迭代,因为所有代码都在if块中,该块将重新检查已确定为存在的内容

我认为第一部分中的问题是,您没有找到匹配项,然后在
click()
调用中失败(而回溯最终没有帮助)
exists()
返回匹配,并设置
getLastMatch()
的值。您可以尝试使用
exists()
返回的匹配设置局部变量,或者在else子句中使用
getLastMatch()。单击()
以单击找到的区域(可能是您的“caption.png”)

您还可以尝试在
exists()
行中指定等待时间

最后,您可以尝试将每个图像设置为一个模式,并使用相似性将结果缩减为一个匹配

如果没有屏幕截图或屏幕上有什么以及屏幕上可能有多少图像的信息,很难给出明确的答案。我还不能评论,但如果你能提供更多信息,我可以编辑这个答案,包括一个更具体的答案

    for idx in range(1, 77):
        if not exists("caption.png"):
            click("1406907972716.png")
            type(Key.PAGE_DOWN)        
            print "skip" + str(idx)
        else: 
            if exists("caption.png"):
                click("caption.png")
                type(Key.F2)
                type("a", KeyModifier.CTRL)
                type("c", KeyModifier.CTRL)
                click("CLICKBOX-4.PNG")
                click("BOX2-4.PNG")
                type("a", KeyModifier.CTRL)
                type(Key.DELETE)
                type("v", KeyModifier.CTRL)
                type(str(idx))
                type(Key.HOME)
                for i in range(25):
                    type(Key.DELETE)
                click("1406907972716.png")
                type(Key.PAGE_DOWN)