我在机器人框架中编写了以下代码。如何验证$ {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}。如果我使用上面的脚本,我收到错误
任何帮助将不胜感激
答案 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