-1

我有一个场景,我在一组操作之后调用了特定的代码块。我在 Python 中使用go-to和。label它按预期工作。

还有其他更好的选择吗?

这是使用 Squish-for-QT 实现自动化的 Python 代码。

label .mylabel 

while (cond1):
        print("inside cond1")
        Function1(x,y,z)
else:
    if (object.exists("obj1")):
        Screen1 = waitForObject("obj1")
        print ("Inside Screen1")

        while (Screen1.visible):
            Function1(a,b,c)
        else:
            goto .mylabel 
4

2 回答 2

1

您可以将上面的代码定义为一个函数并像这样使用一些基本递归

def action():
    while (cond1):
        print("inside cond1")
        Function1(x,y,z)
    else:
        if (object.exists("obj1")):
            Screen1 = waitForObject("obj1")
            print ("Inside Screen1")

            while (Screen1.visible):
                Function1(a,b,c)
            else:
                action()

一般使用递归是比较常见的地方。希望这可以帮助

于 2017-06-14T16:40:08.140 回答
1

在这种特殊情况下,将整个事物包装在 awhile True中将实现相同的行为:

while True:
    while (cond1):
            print("inside cond1")
            Function1(x,y,z)
    else:
        if (object.exists("obj1")):
            Screen1 = waitForObject("obj1")
            print ("Inside Screen1")

            while (Screen1.visible):
                Function1(a,b,c)
        else:
            break

逐个分支检查此分支:

如果满足 cond1,我们继续执行 Function1(x, y, z)

一旦不满足 cond1,我们就会陷入 else。

如果 obj1 存在,我们等待 obj1,否则,我们跳出 while True 循环。

等待obj1之后,我们在Screen1可见的时候继续运行Function1(a,b,c),然后回到while True循环的开头(和原来的goto一致)。

于 2017-06-14T16:46:05.260 回答