如何在机器人框架的FOR循环中使用if / else条件

时间:2018-12-14 06:58:13

标签: robotframework

这是我的代码:

:FOR    ${a}    IN RANGE    2    ${Row_Count}

\    Run Keyword If    '${temp}'== 'True'    Click Link    xpath=//table[@id='listAllSTR']/tbody/tr[${a}]/td[2]/a    and 
\    ...    Screen validation for Answered    ${STR_detail}    and
\    ...    ELSE    Continue For Loop
\    Run Keyword If    ${a}>${Row_Count}   Exit For Loop**

如果if条件通过(即,如果'$ {temp}'=='True'),我需要单击一个链接,但出现错误提示

  

关键字“ Selenium2Library.Click链接”的预期参数为1,为5。

我不知道该怎么办。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:4)

关于此问题。

您正在if语句中执行多个关键字,因此,它将其他关键字作为第一个的参数。

解决方案

您可以创建一个自定义关键字并向其添加其他关键字。在if语句中使用此自定义关键字。参见下面的示例。

*** Keywords ***
Custom Keyword From If
    [Documentation]    Keywords documentation.
    keyword1
    keyword2

*** Test Cases ***
Test Custom Keyword
    Run Keyword If    '${a}'=='True'    Custom Keyword From If

注意:

要执行多个关键字,机器人的关键字为“运行关键字”,请参见文档link

答案 1 :(得分:0)

机器人框架 ... 中的

用于继续下一行的代码,作为上一行的一部分 在您尝试在单击链接关键字之后尝试的示例中,添加了导致此错误的 ... ,将其删除,您的代码将开始运行。
在您的情况下,click link关键字仅接受一个参数作为定位符,因此它认为将行作为参数

:FOR    ${a}    IN RANGE    2    ${Row_Count}

\    Run Keyword If    '${temp}'== 'True'    Click Link    
xpath=//table[@id='listAllSTR']/tbody/tr[${a}]/td[2]/a   
\    Screen validation for Answered    ${STR_detail}   
\    ELSE    Continue For Loop
\    Run Keyword If    ${a}>${Row_Count}   Exit For Loop