简介
时隔多日,Robot Framework系列再次更新
这次更新主要是搬朋友写了一个小脚本,里面用到的东西是之前没有说过的,所以更新一下,佛系更新
介绍
Robot Framework循环主要有两种
一种是FOR
循环,经典传统风格
另外一种是FOR IN
循环,现代风格,可以处理列表或者范围
Robot Framework 的循环写法与 Python 类似,但语法有自己的特点,尤其是在缩进和结束循环标记上。
FOR循环
这个循环主要用于重复执行一段测试步骤若干次
第一种用法
写法
FOR ${i} IN RANGE 5
Log Iteration ${i}
END
${i}是循环变量,可以不用,但必须有
IN RANGE 5
表示循环5次,从0开始,0是第一次,到4结束,4就是第五次了
Log
是循环体中的关键字,每循环一次执行一次,可以替换成你需要循环执行的关键字或命令
END
结束循环
下面是我帮朋友写的脚本里面的一段循环,经过简化后的,主要是用于讲解FOR
循环
FOR ${I} IN RANGE 1000
点击促销管理
点击人员库
点击部门
Reload Page
END
第一行,对照上面的解释,可以看到我需要循环1000次,也就是0-999
第一行后面到END中间就是我需要循环执行的
上面的这一段就是循环依次执行“点击促销管理”、“点击人员库”、“点击部门”和刷新页面,这几个操作依次循环执行1000次
第二种用法
写法1
FOR ${item} IN apple banana orange
Log Fruit: ${item}
END
这个用法我的脚本里面还没有用到,但是如果你理解了上面的用法,那么这个用法就很好理解了
首先是第一行FOR ${item} IN apple banana orange
,可以看到IN后面又三个值,分别是apple、banana、orange
然后中间部分我们执行的是Log Fruit: ${item}
,这个是打印输出${item}
这个变量
最后是循环结束END
首先理解这个循环的操作,可以看出这个循环主要就是循环打印输出${item}
这个变量
${item}
这个变量的值就会依次等于IN
后面的值
也就是说第一次循环的时候,打印输出的内容是Fruit:apple
第二次循环则打印输出Fruit:banana
第三次循环打印输出Fruit:orange
这个是依次的,当IN后面的值都循环完成后停止循环
这个循环可以用来填写表单之类的,每次填写的值都不一样,只需要把每次需要填写的值写在IN后面即可
写法2
Robot Framework 4.0 之后推荐使用这种写法,语法更清晰,也可直接用于 Test Case
或 Keyword
FOR ${item} IN @{fruits}
Log Fruit: ${item}
END
这个写法和第一种写法作用是一样的,只是变了一个写法而已
@{fruits}
是列表变量,可以直接理解为是一个列表
循环会遍历列表中的每个元素,适合处理外部数据或变量列表。
示例
*** Variables ***
@{fruits} apple banana orange
*** Test Cases ***
Loop Over List
FOR ${fruit} IN @{fruits}
Log Today I eat ${fruit}
END
首先我们在*** Variables ***
下面创建了一个列表变量 @{fruits}
,它的值等于apple banana orange
,也就是它有三个元素
然后我们在*** Test Cases ***
下面创建了一个测试用例,名字为Loop Over List
这个测试用例就是执行
FOR ${fruit} IN @{fruits}
Log Today I eat ${fruit}
END
这个和上面一样,循环打印${fruit}
这个变量,然后这个变量等于@{fruits}
这个列表变量,@{fruits}
这个列表变量里面有三个元素,所以会循环三次
执行后就会打印输出下面内容
Today I eat apple
Today I eat banana
Today I eat orange
WHILE 循环
这个循环可以理解为判断加循环
WHILE 循环语法规则
WHILE <条件表达式>
# 循环体(只要条件为真(满足),就一直执行)
END
示例
${BM}= 获取人员库部门
WHILE '${BM}' == ''
点击空白部门
修改班级 20240715期昌明工贸
修改考勤规则 固定班次1
点击保存
强制等待2秒
点击返回
${BM}= 获取人员库部门
END
首先获取人员部门,并赋值到${BM}里面
然后使用WHILE 循环,当${BM}
等于空的时候执行点击空白部门
、修改班级
、修改考勤规则
、点击保存
、强制等待2秒
、点击返回
、再次获取人员部门并赋值到${BM}
,这样只要一直查询到人员部门为空就会一直修改,直到没有人员的部门是空的就会停止循环
循环中的控制语句
Exit For Loop:立即退出循环。
Continue For Loop:跳过本次循环,进入下一次。
嵌套循环
Robot Framework 支持嵌套循环,但需要注意缩进
例如下面这一段,我使用的就是嵌套循环
FOR ${I} IN RANGE 1000
点击促销管理
点击人员库
点击部门
${BM}= 获取人员库部门
WHILE '${BM}' == ''
点击空白部门
修改班级 20240715期昌明工贸
修改考勤规则 固定班次1
点击保存
强制等待2秒
点击返回
${BM}= 获取人员库部门
END
Reload Page
END
首先第一行,可以看出需要循环100次
然后中间部分就是需要循环执行的关键字
上面那一段的作用就是循环点击促销管理,点击人员库,点击部门,然后获取人员部门,如果人员部门为空则进入第二个循环,点击空白部门,修改班级,修改考勤规则,点击保存,强制等待2秒,点击返回,再次获取人员部门,到这里的时候${BM}变量的值已经改变更新了,如果这次获取到的人员部门还是空的那么就继续循环点击空白部门直到再次获取人员库部门,如果后面获取到的人员库部门不是空的了那么就会结束WHILE循环,但是还是处于FOR循环里面,会进行刷新操作,然后再次点击促销管理,到获取人员库部门,如果是空的那么进入WHILE循环,如果不是空的则执行刷新操作。