【问题标题】:Sikuli: for loop/if else statement not working correctlySikuli:for 循环/if else 语句无法正常工作
【发布时间】:2014-09-27 02:23:49
【问题描述】:

我在 Sikuli 中有以下代码,可以执行复制和粘贴任务。我希望它在 caption.png 不存在时执行“如果不存在”中的操作,但有时即使它不存在,它仍然试图找到它并返回一个错误,显示“找不到标题。 .png”。

     for idx in range(1, 77):
         if not exists("caption.png"):
              click("1406907972716.png")
              type(Key.PAGE_DOWN)        
              print "skip" + str(idx)
         else: 
              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)

我尝试了以下方法,但它确实有效,但其他方法无法正常工作:有时它会随机跳转一个 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)

【问题讨论】:

    标签: python for-loop sikuli


    【解决方案1】:

    您是否尝试在 sikuli-IDE 中执行此操作?问题在于,并不总是提供良好的回溯。

    在您的第二个示例中,您似乎完全跳过了索引,可能是因为找不到标题,因此没有执行任何操作,它会跳转到下一次迭代。这是跳过没有输出的迭代,因为所有代码都在 if 块中,该块重新检查已经确定为存在的东西。

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

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

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

    如果没有屏幕截图或有关屏幕上的内容以及屏幕上可能显示多少图像的信息,很难给出明确的答案。我还不能发表评论,但如果您能提供更多信息,我可以编辑此答案以包含更具体的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      相关资源
      最近更新 更多