Robotframework 为什么我会得到';如果';是一个保留关键字";错误?

Robotframework 为什么我会得到';如果';是一个保留关键字";错误?,robotframework,Robotframework,这是我第一次尝试在机器人框架中使用IF条件,我发现这非常困难。我的测试失败,消息是:'If'是一个保留关键字。是的,我想使用这个关键字 下面是相关代码的片段 # Column lookup using ${heading} @{heading_list} Create List @{header_element_list} Get WebElements ${table_headers_locator} FOR ${element} IN @{head

这是我第一次尝试在机器人框架中使用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
#使用${heading}进行列查找
@{heading_list}创建列表
@{header\u element\u list}获取WebElements${table\u headers\u locator}
对于@{header\u element\u list}中的${element}
附加到列表${heading_List}${element.text}
结束
${col}从列表${heading_List}${heading}获取索引
如果${col}<0
在表中找不到失败标题“${Heading}”。
结束
我在PyCharm工作,有一个机器人框架代码语法突出显示插件。插件似乎也认为IF条件有问题;请注意,它的关键字是浅蓝色的,而它上面的FOR循环中的关键字是橙色的


我相信我的IF语句符合IF语句的最简单示例,如Robot框架文档所示:。请帮助我理解为什么不是这样。谢谢

Bryan Oakley写道:“看起来插件还没有更新到支持robot 4.x”,这让我更深入了一点。我雇主的自动化团队已指定Robot 3.1.2!这不是我能改变的

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


就我个人而言,我觉得奇怪的是,像IF表达式这样基本的东西实际上是一种尖端的语言特性。但是,了解Robot 3.x的限制,我将设计一个解决方案。

该插件似乎尚未更新以支持Robot 4.x。sintax是正确的,请确保在“如果”和条件之间有3个空格。如果包含了这一点,请尝试在不使用python的情况下直接使用命令行执行:“robot script.robot”以确保没有其他返回错误robot不是作为通用编程语言设计的。可以证明测试不需要条件逻辑。当然,在实践中,我们发现有时需要,如果不是在测试中,那么在测试使用的关键字中。对于robot 3.x,可以使用以下关键字:。不幸的是,这些关键字没有新的
IF
语法那么容易使用。@BryanOakley我想我可以看出测试不应该是有条件的想法背后的逻辑。但是,我还可以看到robot Get Index from List关键字是Python List.find()方法的包装器,如果找不到该项,该方法将返回-1。在我的例子中,我在对表Cell-Should-Contain的后续调用中使用该列号,该表接受Python负索引。因此,我必须捕获-1。