首页 > 解决方案 > Robot框架中表格和excel的列表长度不同

问题描述

我正在比较和匹配两个列表;
第一个列表/数据从 excel 中收集(${EXCEL DATA} 值添加到 ${LIST EXCEL}),第二个数据/列表使用 xpath 从表中收集,值添加到 ${TABLE LIST}。在这个例子中,我只使用了一行作为列表。实际上,我想使用 excel 中的 12 个值,因此也想从表中获取 12 个值。但是这 12 个值在表中的顺序不同。简化代码:

    ${EXCEL LIST}=          Create List
    Open Excel Document     ${EXCEL DATA}         doc_id=doc1
    FOR     ${I}            IN RANGE    2        3
    ${ROWS FROM EXCEL} =    Read Excel Row     ${I}       sheet_name=Sheet1
    Append to list          ${EXCEL LIST}         ${ROWS FROM EXCEL}
    END
    Log to console          ${EXCEL LIST} 

    ${TABLE LIST}=          Create List
    FOR     ${J}            IN RANGE    2       3
    ${FIRST VALUE} =        Get Text     //table[@class="table"]/tbody/tr/td[1]
    Append To List          ${TABLE LIST}        ${FIRST VALUE}
    ${SECOND VALUE} =       Get Text     //table[@class="table"]/tbody/tr/td[3]
    Append To List          ${TABLE LIST}        ${SECOND VALUE}
    ${THIRD VALUE} =        Get Text     //table[@class="table"]/tbody/tr/td[5]
    Append To List          ${TABLE LIST}        ${THIRD VALUE}
    END
    #etc
    Log to console      ${TABLE LIST}
    Lists should be equal       ${EXCEL LIST}       ${TABLE LIST}

它表明长度不同:1!= 12

${EXCEL LIST} 长度为 1,${TABLE LIST} 长度为 12,而我希望列表为 1=1。

是否有一种简化的方法可以将表中的列表设为长度 1?“获取文本”是什么原因造成的?尝试了不同的方法,但无法克服这一点。提前致谢

标签: excellistrobotframework

解决方案


Read Excel Row正在将一个列表附加到您创建的列表中,因此看起来您正在返回 1,因为列表是嵌套的。另一方面,每个表数据的单值结果只是直接附加到您创建的列表中。

您可以尝试将表格结果附加到循环内的列表中,然后将该列表附加到您的${TABLE LIST}

${EXCEL LIST}  Create List

Open Excel Document  ${EXCEL DATA}  doc_id=doc1
FOR  ${I}  IN RANGE  2  3
    ${ROWS FROM EXCEL}  Read Excel Row  ${I}  sheet_name=Sheet1
    Append to list  ${EXCEL LIST}  ${ROWS FROM EXCEL}
END

${TABLE LIST}  Create List
FOR  ${J}  IN RANGE  2  3
    ${CURRENT_TABLE}  Create List 
    ${FIRST VALUE}  Get Text  //table[@class="table"]/tbody/tr/td[1]
    Append To List  ${CURRENT_TABLE}  ${FIRST VALUE}
    ${SECOND VALUE}  Get Text  //table[@class="table"]/tbody/tr/td[3]
    Append To List  ${CURRENT_TABLE}  ${SECOND VALUE}
    ${THIRD VALUE}  Get Text  //table[@class="table"]/tbody/tr/td[5]
    Append To List  ${CURRENT_TABLE}  ${THIRD VALUE}
    Append To List  ${TABLE LIST}  ${CURRENT_TABLE}
END
#etc
Log To Console   ${EMPTY}
Log To console   Table List: ${TABLE LIST}
Log To console   Excel List: ${EXCEL LIST}
Lists Should Be Equal  ${EXCEL LIST}  ${TABLE LIST}

推荐阅读