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为前置步骤时,可以使用这个全局变量