2017-02-09 15 views
1

ребята. Я новичок в Robot Framework, и, возможно, мой вопрос кажется простым, но я не могу найти правильное решение.Как в Robot Framework получить селекторное значение из библиотеки в «Test Case»

У меня есть тест:

*** Settings *** 
Documentation Login Scenarios 
Library ExtendedSelenium2Library 
Library Resources/LoginPage.py 
Resource Resources/Common.robot 
Library Resources/TopMenuPage.py 
Suite Setup Begin Web Test 
Suite Teardown End Web Test 

*** Variables *** 
${USERNAME} user 
${PASSWORD} password 

*** Test Cases *** 
Login With Valid Credentials 
    [Documentation] Login With Valid Credentials 
    [Tags] Functional 
    LoginPage.input_username ${USERNAME} 
    LoginPage.input_password ${PASSWORD} 
    LoginPage.click_sign_in_button 
    ${test} TopMenuPage.get_selectors 
    page should contain link ${test['logoutButton']} 
    [Teardown] click link css=[ng-click="mainCtrl.logout()"] 

И у меня есть моя библиотека (TopMenuPage.py) код:

selectors = { 
    "logoutButton": "css=[ng-click=\"mainCtrl.logout()\"]", 
    "welcome": "binding=mainCtrl.user.name" 
} 

class TopMenuPage(object): 
    def get_selectors(self): 
     return selectors 

Как в правильном пути, я могу получить мои селекторов в тесте? Например:

page should contain link TopMenuPage.get_selectors['logoutButton'] 

Спасибо за ответ.

+0

На данный момент я использую дополнительную переменную $ {test} и ее работу. Но я думаю, что это нехорошее решение. –

ответ

0

Вы не можете сделать page should contain TopMenuPage.get_selectors['logoutButton'], потому что page should contain требует строки в качестве аргумента, а не вызова функции. Вам нужно будет позвонить TopMenuPage.get_selectors и сохранить результат в переменной, а затем использовать переменную.

+0

Благодарим вас за ответ. Только последний вопрос: могу ли я создать переменную, которая будет доступна во всей Suite? Я попытался переместить переменную $ {test} в *** Variables ***, но я получил ОШИБКУ - «Разрешающая переменная» $ {test ['logoutButton']} 'failed: TypeError: строковые индексы должны быть целыми числами " –

+0

@ AlexanderMelnychuk «да, робот поддерживает тесты, набор и глобальные переменные. Все это описано в [руководстве пользователя] (http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#using-set-test-suite-global-variable • Ключевые слова). –