我想在机器人框架中访问嵌套列表[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]
答案 0 :(得分:3)
第一个问题是你不在列表中创建列表。
考虑这一行:
@{ICMPDU} ICMPDU @{ICMPDU_Val}
这将创建一个由四个值组成的列表:ICMPDU
,Yes
,1
和2
。这是因为当在关键字的右侧使用@
时,列表会被扩展,每个元素都会成为关键字的参数。
从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}