对于机器人框架中的循环,请注意在列表中生成所有数字或字符串并给出类型错误

时间:2015-09-25 10:34:11

标签: robotframework

  

$ {read} =读取Csv文件$ {readcsv}

     

@ {read} =转换为列表$ {read}

     

:FOR $ {counter} IN RANGE @ {read}

     

登录到控制台$ {counter}

它读取数据[['Ramu Govidan'],['Ajith'],['Alagu'],['Mohana'],] 20150925 15:51:56.716:INFO:@ {read} = [['Ramu Govidan'] | ['Ajith'] | ['Alagu'] | ['Mohana']] 但是它给出了错误FOR IN RANGE的转换参数失败:TypeError:预期的数字,得到列表..对于循环的下一个例子

  

$ {values} =获取字典值$ {new dic}

     

@ {values} =转换为列出$ {values}

     

:FOR $ {counter} IN RANGE @ {values}

     

记录$ {counter}

     

记录循环

为此@ {values} = [1 | 2 | 3] 但是for循环生成输出1,它不会生成2和3。任何人都可以告诉回答这个问题。

1 个答案:

答案 0 :(得分:2)

您需要使用IN,而不是IN RANGE。后者期待一个数字,前者迭代列表中的每个项目。由于您有一个列表,因此您想使用IN

| | :FOR | ${item} | IN | @{values}

如果你真的想要一个数字而不是一个项目,你可以在项目的长度上使用IN RANGE

| | ${len}= | get length | ${values}
| | :FOR | ${count} | IN RANGE | ${len}

从机器人框架用户指南,Normal For Loops部分(强调我的):

  

在正常for循环中,从值列表中分配一个变量,   每次迭代一个值。语法以:FOR开头,冒号开头   需要将语法与普通关键字分开。下一个细胞   包含循环变量,后续单元格必须有IN,并且   最终单元格包含要迭代的值。这些值可以   包含变量,包括列表变量。

以下是用户指南的摘录,在For-In-Range Loop部分(强调我的):

  

与其他for循环类似,for-in-range循环以:FOR开头   并且循环变量在下一个单元格中。 以这种格式可以   只有一个循环变量,它包含当前循环索引。该   下一个单元格必须包含IN RANGE,后续单元格必须包含限制。