Selenium 应为类似列表的值,获取字符串

Selenium 应为类似列表的值,获取字符串,selenium,robotframework,Selenium,Robotframework,我写了一个关键字,它调用一个子关键字。现在sub关键字返回两个值,我试图将其存储在分配给main关键字的数组中。当我登录控制台返回值时,它会给出一条错误消息,说-Expected list like value,get string 我尝试了以下解决方法(失败): 我的目标是: 我让sub关键字返回两个值:OTOID和LineIdentifier,并将其存储在数组中。然后分别使用这两个值以供进一步使用 实际: 当我登录到控制台存储在数组中的值时,我会收到一个错误消息: Expected list

我写了一个关键字,它调用一个子关键字。现在sub关键字返回两个值,我试图将其存储在分配给main关键字的数组中。当我登录控制台返回值时,它会给出一条错误消息,说-Expected list like value,get string

我尝试了以下解决方法(失败):

我的目标是: 我让sub关键字返回两个值:OTOID和LineIdentifier,并将其存储在数组中。然后分别使用这两个值以供进一步使用

实际: 当我登录到控制台存储在数组中的值时,我会收到一个错误消息:
Expected list-like-value,get-string

问题是您试图将子关键字的返回值存储为数组/列表,但从中返回字符串

*** Keywords ***
Main keyword
    ${OTO_ID}    ${LineIdentifier}    Run keyword if    '${INACTIVEStateCount}'!='0'    INACTIVE OTOID selector    ${StateCount}

INACTIVE OTOID selector
    Return From Keyword If    '${OTO_IDStatus}'!='None'   ${OTO_ID}  ${LineIdentifier}
这将返回值
${OTO_ID}
${LineIdentifier}
作为单个变量,而不是数组

请注意,为了让答案更简单,我忽略了sub关键字中的其他步骤

需要更换的线路:

Run Keyword If    '${OTO_IDStatus}'!='None'    [Return]    ${OTO_ID} 
Run Keyword If    '${OTO_IDStatus}'!='None'    [Return]    ${LineIdentifier}
更新: 如果您想严格地以列表形式返回值,请使用下面的代码

*** Keywords ***
Main keyword
    ${Identifiers}    Run keyword if    '${INACTIVEStateCount}'!='0'    INACTIVE OTOID selector    ${StateCount}

INACTIVE OTOID selector
    ${Identifiers}    Create List
    .
    <Your FOR loop here>
    .
    \ Run Keyword If    '${OTO_IDStatus}'!='None'   Append to List  ${identifiers}    ${OTO_ID}    ${LineIdentifier}
    Exit For Loop If  '${OTO_IDStatus}'!='None'

    Return From Keyword If    '${OTO_IDStatus}'!='None'    ${Identifiers}
***关键字***
主关键字
${Identifiers}如果“${INACTIVEStateCount}”!=”运行关键字0'非活动OTOID选择器${StateCount}
非活动耳蜗选择器
${Identifiers}创建列表
.
.
\如果“${OTO_IDStatus}”运行关键字!=”None'附加到列表${identifiers}${OTO_ID}${LineIdentifier}
如果“${OTO_IDStatus}”!=”退出循环没有
如果“${OTO_IDStatus}”!=”从关键字返回无“${Identifiers}
参考:

*** Keywords ***
Main keyword
    ${Identifiers}    Run keyword if    '${INACTIVEStateCount}'!='0'    INACTIVE OTOID selector    ${StateCount}

INACTIVE OTOID selector
    ${Identifiers}    Create List
    .
    <Your FOR loop here>
    .
    \ Run Keyword If    '${OTO_IDStatus}'!='None'   Append to List  ${identifiers}    ${OTO_ID}    ${LineIdentifier}
    Exit For Loop If  '${OTO_IDStatus}'!='None'

    Return From Keyword If    '${OTO_IDStatus}'!='None'    ${Identifiers}