Robot Framework列表页标题验证报错:期望参数为列表类对象,实际为字符串
解决Robot Framework报错:Expected argument 1 to be a list or list-like, got string instead
报错原因
你的脚本在使用Append To List关键字时参数传递错误:当你用@{list}作为第二个参数传入时,Robot Framework会将这个仅含单个元素的列表展开成独立的字符串参数,触发Append To List的参数格式校验,从而抛出"期望参数为列表/类列表对象,实际传入字符串"的错误。
问题代码分析
原脚本中每次循环都把${element.text}包装成新列表@{list},再尝试添加到目标列表:
FOR ${element} IN @{elements} @{list} = Create List ${element.text} Log ${element.text} Append To List @{actualList} @{list} END
这里的@{list}会被Robot Framework解析为单个字符串(而非列表),不符合Append To List的参数要求。
修正方案
方案1:直接添加单个元素(推荐)
无需额外创建子列表,直接将商品文本字符串添加到目标列表:
Validate items title on list page @{expectedList} = Create List Iphone X Samsung Note 8 Nokia Edge Blackberry @{elements} = Get WebElements css:.card-title @{actualList} = Create List FOR ${element} IN @{elements} Append To List ${actualList} ${element.text} Log ${element.text} END
方案2:保留子列表逻辑(如需)
如果必须保留创建子列表的步骤,需要用${list}引用列表变量(而非@{list}),避免列表被展开:
Validate items title on list page @{expectedList} = Create List Iphone X Samsung Note 8 Nokia Edge Blackberry @{elements} = Get WebElements css:.card-title @{actualList} = Create List FOR ${element} IN @{elements} @{list} = Create List ${element.text} Log ${element.text} Append To List ${actualList} ${list} END
关键说明
${variable}用于引用整个列表变量,传递给关键字时会保留列表结构。@{variable}会将列表展开为多个独立参数,仅在需要批量传递多个值时使用。
内容的提问来源于stack exchange,提问作者prashant gautam
相关产品推荐
相关产品推荐

