Robot Framework 嵌套 if 语句

Robot Framework nested if statement

我的测试用例中需要嵌套 if 语句。

我需要检查变量 a 是否等于 X,如果是,我需要检查变量 b 是否等于 Y。

我试过这样做:

Click on button
Run Keyword If                      '${var_a}' == 'X'
...         Run Keyword If                      '${var_b}' == 'Y'
...                 Click Element               Locator_a
...                 ELSE
...                 Click Element               Locator_b

...         ELSE
...         Click Element                       Locator_c

我收到的错误是点击元素需要 1 个参数,但得到了 4 个。 这意味着一旦它为第一个 if 语句 (var_a == X) 返回 False,它就会尝试调用第一个 ELSE 语句,并将所有后面的关键字作为参数 (Click Element, Arg1 = locator_b, Arg2 = Else, Arg3 =单击元素,Arg5 = Locator_c).

是否有一种机器人方法可以在不自己编写自定义关键字的情况下执行此操作?

严格来说,不,没有办法为所欲为。但是,您可以将 if 语句合并为一个包含三个条件的大型语句,这些条件由 "ELSE IF" 和 "ELSE":

连接
       Run keyword if  '${var_a}' == 'X' and '${var_b}' == 'Y'
...    Click Element    Locator_a

...    ELSE IF         '${var_a}' == 'X' and '${var_b}' != 'Y'
...    Click Element    Locator_b

...    ELSE
...    Click Element    Locator_c