如果图像没有退出,使用findall和clickall而不会出现错误

时间:2016-09-18 12:43:31

标签: python jython sikuli

我无法弄清楚我做错了什么。只要显示findall的图片,代码就会很好用,但如果x没有显示,那么我会收到错误:

[error] FindFailed ( can not find P(1474201252795.png) S: 0.99 in R[0,0 1920x1080]@S(0) )

不太确定如何解决此问题。

running = True

def runHotkey(event):
    global running
    running = False

Env.addHotkey(Key.F1, KeyModifier.CTRL, runHotkey)

while exists("1474199877323.png")and running:

    click("1474138615993.png")
    click("1474138629993.png")
    wait(5)
    if exists("1474201633804.png"):
        for x in findAll(Pattern("1474201252795.png").exact()):
          click(x)
          click("1474201809505.png")       
    else:
        click("1474201689791.png")
    wait(5)

3 个答案:

答案 0 :(得分:0)

根据文档findAll在搜索失败时抛出异常。 (docs)。尝试使用hasNext()方法和上下文管理器,例如

with findAll(Pattern(...)) as mm:
    while mm.hasNext():
        x = mm.next()
        // process x

答案 1 :(得分:0)

使用try / catch

private boolean exists(Pattern img, int sec) {
        try {
            window.wait(img, sec);
            return true;
        } catch (FindFailed exception) {
            return false;
        }

    }

答案 2 :(得分:0)

避免错误的另一种方法是在使用findAll之前检​​查图像是否存在:

if exists("image_in_findAll.png"):
    for x in findAll("image.png"):
        ...