认真看过前2篇文章是否发现一个简单的“验证当系统中没有课的时,是否能成功添加一个课程”测试用例,在执行的时候出现多次登录和退出操作。那么如何进行优化呢?本篇将对RF如何减少web窗口打开的次数进行展开讲解,希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!
01:需求概述
(1)用例名称:验证当系统中没有课的时,是否能成功添加一个课程
(2)用例现状:初始化操作、执行用例、清除操作均各打开且关闭浏览器一次
(3)现状缺点:每次打开都要加载页面需要耗费不少时间
(4)优化要求:实现执行一条用例只打开和关闭一次浏览器且用户名和密码也只有第一次需要输入
(5)实现思路:①使用
Suite Setup
和Suite Teardown
,保证浏览器打开和关闭只执行一次②将DeleteAllLesson进行改造
使之只有第一次需要输入用户名和密码
02:Go To
1)关键字含义:访问某个网址(前提是已经打开过浏览器)
2)关键字参数:
url
用户关键字优化后代码实现如下:
*** Keywords ***
login
[Arguments] ${username} ${password}
go to http://localhost/mgr/login/login.html
input text id:username ${username}
input text id:password ${password}
click element tag:button
addCourse
[Arguments] ${name} ${desc} ${display_idx}
click element css:[class="glyphicon glyphicon-plus"]
input text css:[ng-model="addData.name"] ${name}
input text css:[ng-model="addData.desc"] ${desc}
input text css:[ng-model="addData.display_idx"] ${display_idx}
click element css:[ng-click="addOne()"]
sleep 1
listCourse
[Return] ${expect}
${eles} get webelements xpath://td[2]
FOR ${ele} IN @{eles}
log to console ${ele}
END
${expect} evaluate [ele.text for ele in $eles]
#*********************优化部分代码*********************
SetupDeleteAllLesson
login auto sdfsdfsdf
TeardownDeleteAllLesson
TeardownDeleteAllLesson
set selenium implicit wait 1
FOR ${i} IN RANGE 9999
${del_buttons}= Get Webelements css:[ng-click="delOne(one)"]
exit for loop if $del_buttons==[]
evaluate $del_buttons[0].click()
click element css:[class="btn btn-primary"]
sleep 2
END
${expect} listcourse
set selenium implicit wait 1
should be true $expect==[]
setup webtest
open browser http://localhost chrome
set selenium implicit wait 5
teardown webtest
close browser
#*********************优化部分代码*********************
测试用例优化后代码实现如下:
*** Settings ***
Resource rc2.robot
Suite Setup setup webtest
Suite Teardown teardown webtest
Test Setup SetupDeleteAllLesson
Test Teardown TeardownDeleteAllLesson
*** Test Cases ***
case1
#增加课程
addCourse 初中地理 初中地理基础知识 1
#获取课表内容
${expect} listCourse
should be true $expect == ['初中地理']