我正在运行一个机器人框架测试用例,其中元素通过 CSV 文件输入到该用例中。其中一些元素会在新的浏览器选项卡中打开,而另一些则不会。我已经编写了一些逻辑来处理这些场景,并且直到最近它都运行得很好。我尝试围绕场景添加一些更明确的逻辑。现在,当我运行它时,我收到一条错误消息:Keyword 'BuiltIn.Run Keyword If'预期至少有 2 个参数,结果为 0。
我已经反复思考这个问题,但找不到我的问题出在哪里。这是我的代码,其中包含有问题的关键字,请让我知道我做错了什么。非常感谢!
Student Tab Scraper
[Arguments] ${csv_file}
${locator_list}= Read Locators From File ${csv_file}
FOR ${locator} IN @{locator_list}
Wait For And Click Element ${locator}
${handles}= Get Window Handles
${num_handles}= Get Length ${handles}
${opened_in_new_tab}= Run Keyword If ${num_handles} > 1 Set Variable ${True} ${False}
Run Keywords
... Run Keyword If '${opened_in_new_tab}' == 'True'
... Log To Console Opening link in new tab
... Select Window ${handles}[1]
... Close Window
... Select Window ${handles}[0]
... ELSE
... Log To Console Opening link in same tab
... Wait For And Click Element ${iunderstand}
END
END
这里有一个语法错误:
${opened_in_new_tab}= Run Keyword If ${num_handles} > 1 Set Variable ${True} ${False}
事实上,是一对;您可能想在满足条件时将变量设置为 True,否则设置为 False。 第一个错误是您没有使用
ELSE
来界定第二个块 - 如果您想要“条件不满足”块,则应该存在它。
另一个是 - 即使它存在,也没有要执行的关键字,只是传递了布尔值 False。当框架运行它时,它会看到“当条件满足时运行
Set Variable ${True}
”,但当不满足时 - “只是错误”。该怎么办?它也不是一个关键字,只是一个值,如何运行一个值呢?
因此,语法错误。
固定版本如下所示:
${opened_in_new_tab}= Run Keyword If ${num_handles} > 1 Set Variable ${True} ELSE Set Variable ${False}
对于这种情况 - 只是设置一个变量,有一个更好的关键字可以使用,
Set Variable If
,它甚至不使用 ELSE 关键字作为后备块。${opened_in_new_tab}= Set Variable If ${num_handles} > 1 ${True} ${False}
半不相关,
Run Keyword If
已被弃用,您可能需要使用IF
代替它(在这种情况下它是一个直接替代品)。