RobotFramework脚本语法

1.准备数据部分:

(1)设置库文件:先调用系统自带的库文件Selenium2Library

*** Settings ***
Library           Selenium2Library

(2)设置关键字keyword:

*** Keywords ***
获取cookie                                             //keyword的名称
    [Arguments]    ${username}                        //[Arguments]设置入参
    open browser   *******(测试网站地址)    chrome      //open browser  库文件自带关键字
    input text    id = username    ${username}
    click button    id=login-btn
    ${cookie}    Get Cookies                          //Get Cookies,库文件自带关键字,获取Cookie值,给赋值给变量${cookie}
    Set Global Variable    ${cookie}                  //设置${cookie}为全局变量,使得所有用例和关键字中可以使用
    close browser
    [Return]    ${cookie}                            //设置出参

(3)keyword之间传参:


*** Keywords ***
设置多个cookie
    ${cookie}    获取cookie    chunyu     //调用其他keyword中的变量值,chunyu为入参
    Set Global Variable    ${cookie}

     当keyword:设置多个cookie   想要调用keyword:获取cookie  中的变量值时,可以这样调用:

     变量名${cookie}     Keyword-Name(被调用的keyword的名字)   入参(被调用的keyword的入参)

 

(4)涉及UI的脚本:

 获取页面元素的Xpath路径:谷歌浏览器:检查--使用元素选择器--找到需要操作的元素--右击copy---copy XPath

获取待操作元素的路径如下://*[@id="js-add-task-form"]/div[2]/div/div/div[1]/ul/li/label/span

获取值班cookie
    [Arguments]    ${username}
    open browser    *****(测试网址)    chrome
    input text    id = username    ${username}
    click button    id=login-btn
    wait until page contains element    //div[@class="ui-selects-selection"]    45
    click element    //div[@class="ui-selects-selection"]
    input text    //input[@class="js-selects-input bui-form-field"]    huatu
    wait until page contains element    '//*[@id="js-add-task-form"]/div[2]/div/div/div[1]/ul/li/label/span'    45
    sleep    2
    click element    '//*[@id="js-add-task-form"]/div[2]/div/div/div[1]/ul/li/label/span'
    click element    //a[@class="button m-button"]
    wait until page contains element    //button[@class="button button-primary"]
    click element    //button[@class="button button-primary"]
    ${cookie}    Get Cookies
    Set Global Variable    ${cookie}
    [Return]    ${cookie}

和UI操作有关的动作有:

wait until page contains element       等待直到页面出现某个元素
例如:wait until page contains element //div[@class="ui-selects-selection"] 45

click element                                     鼠标选中某个元素
例如:click element //div[@class="ui-selects-selection"]

click button                                        点击按钮
例如:click button id=login-btn

input text                                            输入框输入值
例如:input text //input[@class="js-selects-input bui-form-field"] huatu

sleep 2                                              睡眠2秒

 

2.测试用例如何组织:

(1)用例配置:

*** Settings ***
Documentation     接口:/duty/sendToInnerDuty.action
Suite Setup       Run Keywords    获取cookie    chunyu    AND    DutyLib.Set Cookie    ${cookie}
Test Template     duty_sendToInnerDuty
Library               ../../../Libs/DutyLib.py
Resource           准备数据.txt
Resource          ../../../opptions.txt
字段说明:
Documentation 描述测试接口的路径
Suite Setup      配置用例运行的环境,比如说提前获取到cookie    Run Keywords字段就是,通过调用<获取cookie>这个keyword来设置DutyLib这个python文件中需要的cookie值

Test Template    设置运行该测试用例需要调用的python函数:duty_sendToInnerDuty
Library          设置运行该测试用例需要调用的外部库文件,也就是自己写的python文件,该文件中包含了函数duty_sendToInnerDuty,只有设置了这个库文件,上述函数才可以被调用

Resource         设置运行该测试用例需要的数据资源,其中<准备数据.txt>文件和该用例处于同一个文件夹下,是一个小前提,而<opptions.txt>是一个大前提(也就上述的准备数据部分),是在整个用例组的文件夹下
 


(2)用例设计:

*** Test Cases ***
项目-常规值班-工作日9:00-客户负责人
    [Setup]    duty_setup    startTimeStr=${next_Mon} 09:00:00    type=normal_duty    customerId=177016
    id=${duty_id}

----在用例中设置前置步骤:

[Setup]    duty_setup    startTimeStr=${next_Mon} 09:00:00    type=normal_duty    customerId=177016

关键字:[Setup]  用于设置该用例的前置步骤

前置步骤名称:  duty_setup     //该前置步骤是一个keyword,后边跟的是这个keyword的入参

入参:   startTimeStr=${next_Mon} 09:00:00 type=normal_duty customerId=177016

 

----在keyword中调用python函数:

*** Keywords ***
duty_setup
    [Arguments]    ${startTimeStr}=2018-12-31 00:00:00    ${type}=normal_duty    ${customerId}=177016
    ${duty_id}    duty_save    id=${EMPTY}    dutySn=${EMPTY}    problemId=${EMPTY}    type=${type}    customerId=${customerId}
    ...    startTimeStr=${startTimeStr}    endTimeStr=2018-12-31 23:59:59    customerContact=客户联系人_test    contactInfo=联系方式_test    infoSource=internal    sourceDetail=来源详情_test
    ...    associationEntityListJson=[]    attention=注意事项_test    priority=HIGH    title=任务主题_test    description=<p>${time}_任务描述_test</p>
    Set Suite Variable    ${duty_id}

 该keyword设置入参:   [Arguments] ${startTimeStr}=2018-12-31 00:00:00 ${type}=normal_duty ${customerId}=177016

调用python函数:  duty_save    该函数是在库文件DutyLib.py中定义的

该python函数的出参: ${duty_id}

该python函数的入参:跟在函数名后边

设置出参变量为全局变量:  Set Suite Variable ${duty_id}  ,方便其他用例在以该keyword为前置步骤时,可以使用这个全局变量

posted @ 2018-12-11 17:55  小春熙子  阅读(1582)  评论(0编辑  收藏  举报