为什么这个循环有时会在屏幕上随机点击?

时间:2015-12-26 00:02:18

标签: random sikuli

我已经完成了我自己的循环,而Iam试图让它变得更快,更好......但有时在它重复搜索现有之后......它会随机按下(我认为它与我在sikuli中使用的任何img iam都不相似)放在屏幕上。也许你会知道为什么。

以下循环的一部分

    while surowiec_1:        
        if exists("1451060448708.png", 1) or exists("1451061746632.png", 1):
            foo = [w_lewo, w_prawo, w_dol, w_gore]                
            randomListElement = foo[random.randint(0,len(foo)-1)]
            click(randomListElement)
            wait(3)
        else:
            if exists("1450930340868.png", 1 ):
                click(hemp)
                wait(1)
                hemp = exists("1450930340868.png", 1)
            elif exists("1451086210167.png", 1):
                click(tree)
                wait(1)
                tree = exists("1451086210167.png", 1)
            elif exists("1451022614047.png", 1 ):
                hover("1451022614047.png")
                click(flower)
                flower = exists("1451022614047.png", 1)
            elif exists("1451021823366.png", 1 ):
                click(fish)
                fish = exists("1451021823366.png")
            elif exists("1451022083851.png", 1 ):
                click(bigfish)
                bigfish = exists("1451022083851.png", 1)
            else: 
                foo = [w_lewo, w_prawo, w_dol, w_gore]                
                randomListElement = foo[random.randint(0,len(foo)-1)]
                click(randomListElement)
                wait(3)

我想知道这只是img识别的程序问题还是我犯了错误。

1 个答案:

答案 0 :(得分:1)

你调用两次exist方法来获得相同的匹配(你的if语句中的第一个匹配,第二次将它分配给值。你要求sikuli评估图像两次,它可以有不同的结果。 来自method's documentation

  

之后可以使用Region.getLastMatch()访问最佳匹配。