Как я могу получить доступ к значению вложенных списков в рамках робота - PullRequest
0 голосов
/ 09 мая 2018

Я хочу получить доступ к значениям вложенного списка [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 голосов
/ 09 мая 2018

Первая проблема в том, что вы не создаете список внутри списка.

Рассмотрим эту строку:

@{ICMPDU}         ICMPDU    @{ICMPDU_Val}

Это создаст список, состоящий из четырех значений: ICMPDU, Yes, 1 и 2. Это потому, что когда @ используется справа от ключевого слова, список расширяется, и каждый элемент становится аргументом для ключевого слова.

Из руководства пользователя Framework Framework (выделение добавлено):

Когда переменная используется в качестве скаляра, например, $ {EXAMPLE}, ее значение будет использоваться как есть. Если значение переменной является списком или подобным списку, его также можно использовать в качестве переменной списка, например @ {EXAMPLE}. В этом случае отдельные элементы списка передаются как аргументы отдельно.

Если вы хотите, чтобы список был вторым элементом списка, вы должны использовать $ вместо @ при определении переменной:

@{ICMPDU}         ICMPDU    ${ICMPDU_Val}

Вторая проблема заключается в том, что синтаксис для доступа к элементам массива работает только за скобками, если у вас есть один индекс. Если вам нужно что-то более сложное, например, [1][2], вам нужно использовать расширенный синтаксис переменной и перемещать индексы внутри фигурных скобок.

Например, ${ICMPDU[1][2]}

0 голосов
/ 09 мая 2018

Использование библиотеки коллекций:

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

Дает вывод:

$ {li} = [u "'Да'", u'1 ', u'2']

$ {res} = 2

и переменные как:

*** Variables ***
@{ICMPDU_Val}     'Yes'    1    2
@{ICMPDU}         ICMPDU    ${ICMPDU_Val}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...