如何验证参数是否在Robot Framework中的创建列表中

时间:2017-12-14 16:20:24

标签: robotframework

我在机器人框架中编写了以下代码。如何验证$ {args}是否在$ {Mylist}

Create Article

    [Arguments]  ${args}
    ${MyList}=    Create List    'Federal News'   'EY News'
    Run Keyword If   ${args}  in  ${MyList}   Run keywords  Click Element  ${tab1_Xpath}   AND  Wait Until Page Contains  Federal News

我从另一个文件中调用Create Article $ {arg}。如果我使用上面的脚本,我收到错误

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

Run关键字if的第一个参数必须是有效表达式。因为“in”周围有多个空格,所以机器人认为${args}是表达式,而in${MyList}是其他参数。要解决此问题,您需要在“in”的任一侧有一个空格。

第二个问题是您正在创建包含引号的字符串列表。我猜你实际上并不想那样。如果您希望列表包含字符串Federal News,则需要省略引号。

最后,表达式在变量替换后需要是有效的python语法。由于您要比较字符串,因此您需要引用参数或使用特殊变量语法$args。使用特殊语法通常是最好的解决方案,因为您不必担心变量本身是否包含引号。

最后,我建议使用${arg}而不是${args},因为它是标量而不是列表。

假设您的数据实际上并未包含引号,请按以下步骤操作:

Create article
    [Arguments]  ${arg}
    ${MyList}=    Create List    Federal News   EY News
    Run Keyword If   $arg in $MyList   Run keywords  
    ...  Click Element  ${tab1_Xpath}   
    ...  AND  Wait Until Page Contains  Federal News

有了这个,您可以运行如下关键字:

Create article  Federal News

答案 1 :(得分:0)

Bryan有完美的答案,这里有一个解决方法,通过使用集合库中的以下关键字来执行相同的任务

1)运行关键字和返回状态 - 为关键字成功或失败返回True或False

2)列表应包含值 - 检查列表中的项目

Create article
    [Arguments]  ${arg}
    ${MyList}=    Create List    Federal News   EY News

    ${status}=    Run Keyword And Return Status    List Should Contain Value    ${mylist}    ${arg}
    Run Keyword If   ${status}==True   Run keywords  
    ...  Click Element  ${tab1_Xpath}   
    ...  AND  Wait Until Page Contains  Federal News