为啥我会收到“'If' is a reserved keyword”错误?
Posted
技术标签:
【中文标题】为啥我会收到“\'If\' is a reserved keyword”错误?【英文标题】:Why am I getting "'If' is a reserved keyword" error?为什么我会收到“'If' is a reserved keyword”错误? 【发布时间】:2021-07-27 08:12:48 【问题描述】:这是我第一次尝试在机器人框架中使用 IF 条件,我发现它非常困难。我的测试失败并显示以下消息:'If' is a reserved keyword。嗯,是的——我想使用那个关键字!
这是相关代码的sn-p。
# 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
我在 PyCharm 中工作,使用机器人框架代码语法高亮插件。该插件似乎也认为 IF 条件有问题;请注意,它的关键字是浅蓝色的,而紧接其上方的 FOR 循环中的关键字是橙色的。
我相信我的 IF 语句符合最简单的 IF 语句示例,如此处的 Robot Framework 文档所示:https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#advanced-features。请帮助我理解为什么不是这样。谢谢!
【问题讨论】:
插件好像没有更新支持robot 4.x sintax 是正确的,请确保 "IF" 和条件之间有 3 个空格。如果涵盖了这一点,请尝试在不使用 python 的情况下直接使用命令行执行:“robot script.robot”以确保没有其他返回错误 【参考方案1】:Bryan Oakley 写道:“看起来该插件尚未更新以支持机器人 4.x”,这让我更深入地挖掘。我雇主的自动化团队指定了 Robot 3.1.2!这不是我能改变的。
在线文档指出 IF 表达式已添加到 Robot 4.0 中的语言中。因此,我对 IF 语句的语法高亮显示与我的预期不一致是正确的——因为 Robot 3.x 不会以这种方式处理条件语句。
就个人而言,我觉得奇怪的是,像 IF 表达式这样基本的东西实际上是一种尖端的语言功能。但是,在了解 Robot 3.x 的限制后,我将设计一个解决方法。
【讨论】:
机器人并非设计为通用编程语言。可以论证测试不应该需要条件逻辑。当然,在实践中我们发现有时需要,如果不是在测试中,那么在测试使用的关键字中。对于机器人 3.x,可以使用诸如 run keyword if 之类的关键字。不幸的是,这些关键字不像新的IF
语法那样易于使用。
@BryanOakley 我想我可以看到测试不应该是有条件的想法背后的逻辑。但是,我还可以看到机器人 Get Index from List 关键字是 Python list.find() 方法的包装器,如果找不到该项目,则返回 -1。在我的例子中,我在后续调用 Table Cell Should Contain 时使用该列号,它接受 Python 负索引。所以我必须捕获-1。以上是关于为啥我会收到“'If' is a reserved keyword”错误?的主要内容,如果未能解决你的问题,请参考以下文章