Как использовать библиотеку в качестве переменной - PullRequest
1 голос
/ 08 апреля 2019

У меня есть проект в RobotFramework, в котором уже создано более 50 тестов. И я хочу использовать AppiumLibrary или Selenium2Library в соответствии с типом теста. Я бы хотел избежать повторения одного и того же теста, просто потому что Selenium2Library не работает на мобильном

*** Settings ***
Library           AppiumLibrary
Library           Selenium2Library

*** Test Cases ***
TC001
    [Setup]    Configuration
    Pause Execution    ${globalType}|${globalLibrary}
    Start Test
    ${globalLibrary}.Wait Until Page Contains Element    id=age-gate-yes    60s
    Sleep    3s
    ${globalLibrary}.Click Element    xpath=//a[@id='age-gate-yes']
    ${globalLibrary}.Wait Until Page Contains Element    xpath=//a[@href="/profile"]    60s
    ${globalLibrary}.Click Element    xpath=//a[@href="/profile"]
    ${globalLibrary}.Wait Until Page Contains Element    xpath=//input[@name="email"]    60s
    ${globalLibrary}.Click Element    xpath=//input[@name="email"]
    ${globalLibrary}.Input Text    xpath=//input[@name="email"]    johndoe@john.doe
    ${globalLibrary}.Click Element    xpath=//input[@name="password"]
    ${globalLibrary}.Input Text    xpath=//input[@name="password"]    JohnDoe123
    ${globalLibrary}.Click Element    xpath=//div[@id='react-component-login-header']//button/div/span[1]
    ${globalLibrary}.Wait Until Page Does Not Contain Element    xpath=//div[@id='react-component-login-header']//button/div/span[1]    15s
    [Teardown]    End Test

*** Keywords ***
Configuration
    Set Global Variable    ${globalType}    ${Type}
    Run Keyword If    '${Type}'=='Desktop'    Set Global Variable    ${globalLibrary}    Selenium2Library
    Run Keyword If    '${Type}'=='Mobile'    Set Global Variable    ${globalLibrary}    AppiumLibrary
    Pause Execution    ${globalType}|${globalLibrary}

Start Test
    Run Keyword If    '${Type}'=='Desktop'    Start Desktop
    Run Keyword If    '${Type}'=='Mobile'    Start Mobile

End Test
    Run Keyword If    '${Type}'=='Desktop'    End Desktop
    Run Keyword If    '${Type}'=='Mobile'    End Mobile

Start Mobile
    AppiumLibrary.Open Application    http://127.0.0.0:4444/wd/hub    platformName=iOS    platformVersion=12.1    deviceName=iPhone Simulator    browserName=Safari
    AppiumLibrary.Go To Url    https://www.somewebsite.com/

Start Desktop
    Selenium2Library.Open Browser    https://www.somewebsite.com/    Chrome
    Maximize Browser Window

End Mobile
    Close All Applications

End Desktop
    Close All Browsers

Я надеялся, что глобальная переменная может полностью заполнить библиотеку, однако я получаю:

TC001                                                                 | FAIL |
No keyword with name '${globalLibrary}.Wait Until Page Contains Element' found. Did you mean:
    AppiumLibrary.Wait Until Page Contains Element

1 Ответ

4 голосов
/ 08 апреля 2019

Вместо помещения имени библиотеки в переменную, вы можете динамически создать нужную библиотеку с помощью библиотеки импорта ( из Builtin ):

Configuration
    Run Keyword If    '${Type}'=='Desktop'    Import Library     Selenium2Library
    Run Keyword If    '${Type}'=='Mobile'     Import Library     AppiumLibrary

Таким образом, он будет гибким, как вы хотите, для настольных или мобильных тестов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...