Robotframework 如何验证参数是否位于Robot框架中的已创建列表中

Robotframework 如何验证参数是否位于Robot框架中的已创建列表中,robotframework,Robotframework,我已经在robot框架中编写了以下代码。如何验证${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 Unti

我已经在robot框架中编写了以下代码。如何验证${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
我正在从另一个文件调用
createarticle${arg}
。如果我使用上面的脚本,我会得到错误


任何帮助都将不胜感激

运行关键字if的第一个参数必须是有效的表达式。由于“in”周围有多个空格,robot认为
${args}
是表达式,而
in
${MyList}
是附加参数。要解决这个问题,您需要在“in”的两侧有一个空格

第二个问题是,您正在创建一个包含引号的字符串列表。我猜你不是真的想要那个。如果希望列表包含字符串
联邦新闻
,则需要省略引号

最后,在变量替换之后,表达式需要是有效的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

运行关键字if的第一个参数必须是有效的表达式。由于“in”周围有多个空格,robot认为
${args}
是表达式,而
in
${MyList}
是附加参数。要解决这个问题,您需要在“in”的两侧有一个空格

第二个问题是,您正在创建一个包含引号的字符串列表。我猜你不是真的想要那个。如果希望列表包含字符串
联邦新闻
,则需要省略引号

最后,在变量替换之后,表达式需要是有效的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

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

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

您得到的错误是什么?您传入的数据是否包含引号?换句话说,
${args}
是否类似于
联邦新闻
联邦新闻
?您得到的错误是什么?您传递的数据是否包含引号?换句话说,
${args}
类似于
联邦新闻
还是
联邦新闻
?非常感谢布莱恩。就像一个魔咒一样,非常感谢你,布莱恩。它的工作就像一个魅力