Robot Framework Lists/Collections: вопрос новичка по листам

robot-framework
Теги: #<Tag:0x00007fedc00c4be8>

(Postmart) #1

Привет, возможно вопрос очень простой, но я никак не могу найти ответ в документации. Плюс, использую RF только второй день, так что навыков немного :smile:
У меня есть тест с библиотекой Selenium2Library. Я Хочу получить список всех елементов через Selenium (find_elements_by..). В RF, насколько я понимаю, это можно сделать с помощью Get Webelements (которая должна вернуть лист всех найденный элементов):

Connect to a host
    @{hosts}    Get Webelements    ${TotalHosts}
    @{offhosts}    Get Webelements    ${HostsOff}

Теперь у меня есть два листа: @{hosts} и @{offhosts}
Дальше я хочу удалить те элементы из @{hosts}, которые также присутствуют в @{offhosts}
Таким образом, я хочу, чтобы в @{hosts} остались только те элементы, что не содержатся в @{offhosts}

Но никак не могу справиться с этой задачей. На сейчас у меня есть вот такой код:

 : FOR    ${host}    IN    @{offhosts}
    \    ${num}     Get Index From List    @{hosts}    ${host}
    \    Remove From List    @{hosts}    ${num}
    ${h}    Get From list    @{hosts}    0
    Click Element    ${h}

Я получаю вот такую ошибку:

KEYWORD ${num} = Collections . Get Index From List @{hosts}, ${host} Documentation: Returns the index of the first occurrence of the value on the list. Start / End / Elapsed: 20151021 15:14:19.382 / 20151021 15:14:19.383 / 00:00:00.001 15:14:19.382 FAIL Keyword 'Collections.Get Index From List' expected 2 to 4 arguments, got 13.


#2

Так и должно быть: список, подставленный в аргументы, разворачивается в список аргументов.
Чтобы передать списочную переменную как один аргумент, надо ее использовать как скаляр.
В примере к кейворду же написано:

${x} = 	Get Index From List 	${L5} 	d

(Postmart) #3

Спасибо!! :at_info: Помогли