Robotframework 如何在robot框架中的FOR循环中使用if/else条件

Robotframework 如何在robot框架中的FOR循环中使用if/else条件,robotframework,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 \ .

这是我的代码:

: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条件通过时(即if'${temp}'=='True'),我需要单击一个链接,但我得到一个错误

关键字'Selenium2Library.Click Link'应为1个参数,得到5个

我不知道该怎么办


有人能帮我吗?

在robot framework中,用于将下一行的代码作为上一行的一部分继续 在您单击链接关键字后尝试的示例中,您添加了导致此错误的,删除这些关键字,代码将开始运行。
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
编辑
for循环的新语法

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
END

关于这个问题。

您正在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
注意:


要执行多个关键字robot的关键字“运行关键字”,请参阅文档

删除。。。从for循环内的第2行和第3行开始,这些都被计算为click link关键字的参数