zoukankan      html  css  js  c++  java
  • 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为前置步骤时,可以使用这个全局变量

  • 相关阅读:
    个性化推荐系统(二)---构建推荐引擎
    个性化推荐系统(一)---今日头条等的内容划分、分类
    双11线上压测netty内存泄露
    数据、信息、知识、智慧
    ReentrantLock的相关方法使用
    公平锁和非公平锁
    Lock中使用Condition实现等待通知
    使用IO流将数据库中数据生成一个文件,结果使用Notepad++打开部分数据结尾出现NUL
    ThreadLocal的使用
    join方法
  • 原文地址:https://www.cnblogs.com/hqutcy/p/9969905.html
Copyright © 2011-2022 走看看