You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Robot Framework调用列表值报错:List '${element}'无索引0项

解决Robot Framework读取CSV后索引访问报错问题

问题场景

在PyCharm中使用Robot Framework结合Selenium Library时,先从表格获取ProductID存入列表并写入CSV,代码如下:

${list}=   Create List   ${ProductID}
${data}=    create list    ${list}
Append To Csv File     ProductID.csv     ${data}

CSV写入成功后,在另一脚本读取该CSV并调用,代码如下:

${rows} =  get element count   xpath=//*[@id="YearlyReport"]/tbody/tr
sleep  2
log to console   Total Rows ${rows}

${ProductID}=     Read Csv File To List      ProductID.csv
FOR    ${element}    IN    @{ProductID}
    Log To Console   ${element}[0]

    FOR    ${rowno}    IN RANGE    1    ${rows}+1
        Input Text    xpath=//input[@placeholder='Search ...']    ${element}[0]
        sleep   5

        ${Details} =   Get Text    xpath=//*[@id="YearlyReport"]/tbody/tr[${rowno}]/td[10]
        log to console  In Search Stage of ${Details}[0] is ${Details}

运行时出现报错:List '${element}' has no item in index 0,将索引改为1后仍报同类错误。

报错原因

  1. 写入CSV时的冗余嵌套:原代码中先用Create List把单个${ProductID}包装成列表,又用create list再套一层,导致CSV中存储的是嵌套列表格式的文本,而非单一ProductID值。
  2. 读取后的数据类型误解:Read Csv File To List返回的每个${element}是字符串(CSV存储的是纯文本),但代码里把它当成列表去用索引[0]访问,自然会触发索引不存在的错误。

解决方案

1. 修正CSV写入逻辑,去掉多余列表嵌套

如果是写入单个ProductID,直接写入即可:

Append To Csv File     ProductID.csv     ${ProductID}

如果是批量写入多个ProductID,直接使用已有的列表(无需二次嵌套):

# 假设${ProductID_List}是包含多个ProductID的列表
Append To Csv File     ProductID.csv     @{ProductID_List}

2. 修改读取后的遍历代码,直接使用字符串

读取后的${element}就是单个ProductID字符串,不需要索引访问:

${ProductID}=     Read Csv File To List      ProductID.csv
FOR    ${element}    IN    @{ProductID}
    Log To Console   ${element}

    FOR    ${rowno}    IN RANGE    1    ${rows}+1
        Input Text    xpath=//input[@placeholder='Search ...']    ${element}
        sleep   5

        ${Details} =   Get Text    xpath=//*[@id="YearlyReport"]/tbody/tr[${rowno}]/td[10]
        log to console  In Search Stage of ${element} is ${Details}

3. (可选)处理带表头的CSV

如果CSV包含表头,建议用Read Csv File返回字典列表来精准获取值:

${csv_data}=     Read Csv File      ProductID.csv
FOR    ${row}    IN    @{csv_data}
    ${product_id}=    Get From Dictionary    ${row}    ProductID  # 假设表头字段为ProductID
    Input Text    xpath=//input[@placeholder='Search ...']    ${product_id}

内容的提问来源于stack exchange,提问作者ADS KUL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 15:00:05