如何在机器人框架中访问嵌套列表的值

时间:2018-05-09 09:06:26

标签: robotframework

我想在机器人框架中访问嵌套列表[ICMPDU,[0,1,2]]的值。我想访问机器人框架中列表中的元素2。下面是我的代码。下面的代码输出为'是' [2]。有什么建议吗?

*** Settings ***
Library           SeleniumLibrary
Library           Collections

*** Variables ***
@{ICMPDU_Val}     'Yes'    1    2
@{ICMPDU}         ICMPDU    @{ICMPDU_Val}

*** Test Cases ***
Network_web_page
  Log To Console    @{ICMPDU}[1][2]

2 个答案:

答案 0 :(得分:3)

第一个问题是你在列表中创建列表。

考虑这一行:

@{ICMPDU}         ICMPDU    @{ICMPDU_Val}

这将创建一个由四个值组成的列表:ICMPDUYes12。这是因为当在关键字的右侧使用@时,列表会被扩展,每个元素都会成为关键字的参数。

robot framework users guide(强调添加):

  

当变量用作$ {EXAMPLE}之类的标量时,其值将按原样使用。如果变量值是列表或类似列表,则也可以使用像@ {EXAMPLE}这样的列表变量。 在这种情况下,单独的列表项将作为参数单独传递。

如果您希望列表成为列表的第二个元素,则在定义变量时必须使用$而不是@

@{ICMPDU}         ICMPDU    ${ICMPDU_Val}

第二个问题是,如果您有一个索引,访问数组元素的语法只能在大括号外使用。如果您需要更复杂的时间,例如[1][2],则需要使用extended variable syntax并在大括号内移动索引。

例如,${ICMPDU[1][2]}

答案 1 :(得分:1)

使用收藏库:

*** Test Cases ***
Network_web_page
    ${li}=    Get From List    ${ICMPDU}    1
    ${res}=    Get From List    ${li}    2

给出输出:

  

$ {li} = [你"'是'",你' 1',你' 2']

     

$ {res} = 2

和变量为:

*** Variables ***
@{ICMPDU_Val}     'Yes'    1    2
@{ICMPDU}         ICMPDU    ${ICMPDU_Val}