Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Robotframework question: Random choiсe in select

robot-framework
selenium
webdriver
Теги: #<Tag:0x00007f7b6a1fedd8> #<Tag:0x00007f7b6a1fea40> #<Tag:0x00007f7b6a1fe860>

(rom4ikkk) #1

Всем привет, столкнулся с проблемой рандомного выбора элемента с селекта средствами роботфреймворка.
структура следующая: http://screencast.com/t/7y33Ms5ZiAAb
#получаю список элементов:
@{LIST_VALUES} Get List Items name=field_category[und]
Log To Console List: @{LIST_VALUES}
#сам список с логов:
@{LIST_VALUES} = [ - Select a value - | Interview | Guide | Reviews | Reports | Student Life ]

Как теперь реализовать random choise со списка с помощью робота?

п.с. попробовал написать в своей библиотеке вот такой код на питоне:
def random_choice(list_terms):
rand_item = random.choice(list_terms)
return random.choice(rand_item)

в робот файле:
@{LIST_VALUES} Get List Items name=field_category[und]
${result} random choice @{LIST_VALUES}

Но когда передаю список в функцию получаю ошибку, что передаются элементы списка как параметры(проблема с преобразованием типов данных?):
Keyword ‘CustomLogic.Random Choice’ expected 1 argument, got 6.


(rom4ikkk) #2

Решено. Передал правильно параметр в random_choice. Правильно передавать с таким же именем: ${result} random choice list_terms=@{LIST_VALUES}

Кейворд:

Library   Libs/CustomLogic.py    
Get Random Category Term Name    
        @{LIST_VALUES}  Get List Items  name=field_category[und]
        ${result}  random choice  list_terms=@{LIST_VALUES}
        [Return]  ${result}

CustomLogic.py:

def random_choice(list_terms):
    del list_terms[0]
    rand_item = random.choice(list_terms)
    return rand_item

п.с. дополнительно еще удаляю первый элемент в списке. В самом тесте использовал Select From List By Label и подставлял туда ${result}


(rmerkushin) #3

Вроде можно было без библиотеки через стандартный кейворд evaluate вызвать random. Но это так, на будущее :slight_smile: