为什么我会收到“'If' 是保留关键字”错误?

Joh*_*sky 5 robotframework

这是我第一次尝试在 Robot Framework 中使用 IF 条件,我发现它非常困难。我的测试失败并显示消息:“If”是保留关键字。 嗯,是的——我想使用这个关键字!

这是相关代码片段。

    # Column lookup using ${heading}
    @{heading_list}  Create List
    @{header_element_list}  Get WebElements  ${table_headers_locator}
    FOR  ${element}  IN  @{header_element_list}
        Append To List  ${heading_list}  ${element.text}
    END
    ${col}  Get Index From List  ${heading_list}  ${heading}
    IF  ${col} < 0
        Fail  Heading '${heading}' not found in table.
    END
Run Code Online (Sandbox Code Playgroud)

我正在使用 PyCharm,使用 Robot Framework 代码语法突出显示插件。该插件似乎还认为 IF 条件有问题;请注意,其关键字为浅蓝色,而紧邻其上方的 FOR 循环中的关键字为橙色。

在此输入图像描述

我相信我的 IF 语句符合 IF 语句的最简单示例,如此处的 Robot Framework 文档所示:https: //robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#advanced-features。请帮助我理解为什么情况并非如此。谢谢!

Joh*_*sky 3

Bryan Oakley 写道:“看起来该插件尚未更新以支持机器人 4.x”,这让我更深入地挖掘。我雇主的自动化团队指定了 Robot 3.1.2!这不是我能改变的。

在线文档指出,IF 表达式已添加到 Robot 4.0 的语言中。因此,我对 IF 语句的语法突出显示与我的预期不符是正确的——因为 Robot 3.x 不会以这种方式处理条件语句。

就我个人而言,我觉得很奇怪的是,像 IF 表达式这样基本的东西实际上是一种前沿的语言功能。但是,了解 Robot 3.x 的限制后,我将设计一个解决方法。

  • 机器人并不是被设计为通用编程语言。可以认为测试不需要条件逻辑。当然,在实践中我们发现有时需要,如果不是在测试中,那么在测试使用的关键字中。对于 Robot 3.x,可以使用 [run keywords if](http://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Run%20Keyword%20If) 等关键字。不幸的是,这些关键字并不像新的“IF”语法那么容易使用。 (5认同)