一、介绍:RobotFrameWork 支持 FOR 循环语句,语法和 Python 的语法基本相同,但 RobotFrameWork 中,"FOR" 关键字前面需要增加一个 ":",写成 ":FOR",其它与 Python 的语法相同

二、For 循环实例

  • FOR  IN

    • 这种结构,循环的次数由 "IN" 关键字后面的变量个数控制  
    • 在 FOR 循环语句结束行加上 END,防止报错 "FAIL : FOR loop contains no keywords
FOR    ${var}    IN    Apple    Banana    Grape
log ${var}
END #结果如下
20200407 22:06:31.272 : INFO : Apple
20200407 22:06:31.273 : INFO : Banana
20200407 22:06:31.274 : INFO : Grape
@{list}    Create List    Apple    Banana    Grape
FOR ${var} IN @{list}
log ${var}
END #结果如下
20200407 22:09:51.195 : INFO : @{list} = [ Apple | Banana | Grape ]
20200407 22:09:51.196 : INFO : Apple
20200407 22:09:51.197 : INFO : Banana
20200407 22:09:51.198 : INFO : Grape
  • FOR  IN RANGE

    • 这种写法更常用一些,"IN RANGE" 后面跟一个整数型的数字的范围,循环的次数受数字的范围控制 
    • 从结果我们可以看出,${var} 的值从 3 开始,一直被赋值到 4,循环 2 次
FOR    ${var}    IN RANGE    3    5
log ${var}
END #结果如下
20200407 22:12:30.172 : INFO : 3
20200407 22:12:30.173 : INFO : 4
    • "IN RANGE" 后面也可以只写一个数字,表示范围的下限默认是0  
FOR    ${var}    IN RANGE    3
log ${var}
END #结果如下
20200407 22:14:01.269 : INFO : 0
20200407 22:14:01.270 : INFO : 1
20200407 22:14:01.271 : INFO : 2
    • 以上两种写法,步长默认步长都是 1,我们也可以修改步长,如下修改步长为 10 
FOR    ${var}    IN RANGE    20    40    10
log ${var}
END #结果如下
20200407 22:15:49.798 : INFO : 20
20200407 22:15:49.799 : INFO : 30
  • For  IN ENUMERATE 循环

    • 有些时候需要知道当前循环中的循环位置的 index 编号,此时可以使用 FOR-IN ENUMERATE 关键字,在取 index 编号时,固定使用 ${index} 作为变量名
@{list}    Create List    Apple    Banana    Grape
FOR ${index} ${var} IN ENUMERATE @{list}
log ${index}:${var}
END #结果如下
20200407 22:21:52.578 : INFO : @{list} = [ Apple | Banana | Grape ]
20200407 22:21:52.579 : INFO : 0:Apple
20200407 22:21:52.580 : INFO : 1:Banana
20200407 22:21:52.581 : INFO : 2:Grape
  • For  IN ZIP 循环

    • 对于有些测试来说,可能会用到多个列表的数据,在循环中需要对这些数据进行组合使用,RF 提供了一个叫做 For-IN ZIP 的关键字,该关键字来自于 python 内置的 zip 函数,可用于对列表进行组合
    • 这里注意,我们在定义一个列表变量时,可以使用 ${列表名},也可以使用 @{列表名},而在 For-IN ZIP 循环中使用该关键字时,只能使用 ${列表名}
@{num}    Create List    1    2    3    4
${name} Create List zhangsan lisi wangwu zhaoliu
FOR ${n1} ${n2} IN ZIP ${num} ${name}
log ${n1}:${n2}
END #结果如下
20200407 22:26:58.989 : INFO : @{num} = [ 1 | 2 | 3 | 4 ]
20200407 22:26:58.990 : INFO : ${name} = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
20200407 22:26:58.991 : INFO : 1:zhangsan
20200407 22:26:58.992 : INFO : 2:lisi
20200407 22:26:58.993 : INFO : 3:wangwu
20200407 22:26:58.994 : INFO : 4:zhaoliu

三、退出循环

  • Exit For Loop 退出循环

    • RF 也提供了退出循环的语句 —— Exit For Loop,遇到这个语句,脚本将无条件提出循环  
    • 如下 ${var} 被赋值到 Banana,触发了 Exit For Loop 语句而推出了循环

@{list}    Create List    Apple    Banana    Grape
FOR ${var} IN @{list}
Run Keyword If "${var}" == "Banana" Exit For Loop
log ${var}
END #结果如下
20200407 22:31:01.587 : INFO : @{list} = [ Apple | Banana | Grape ]
20200407 22:31:01.589 : INFO : Apple
20200407 22:31:01.590 : INFO : Exiting for loop altogether.
  • Exit For Loop If 满足条件后退出循环
@{list}    Create List    Apple    Banana    Grape
FOR ${var} IN @{list}
Exit For Loop If "${var}" == "Grape"
log ${var}
END #结果如下
20200408 20:02:30.821 : INFO : @{list} = [ Apple | Banana | Grape ]
20200408 20:02:30.822 : INFO : Apple
20200408 20:02:30.824 : INFO : Banana
  • 在循环中使用 Continue,终止单个循环

    • Continue For Loop
@{list}    Create List    Apple    Banana    Grape
FOR ${var} IN @{list}
Run Keyword If "${var}" == "Banana" Continue For Loop
log ${var}
END #结果如下
20200408 20:06:05.555 : INFO : @{list} = [ Apple | Banana | Grape ]
20200408 20:06:05.557 : INFO : Apple
20200408 20:06:05.558 : INFO : Continuing for loop from the next iteration.
20200408 20:06:05.560 : INFO : Grape
    • Continue For Loop If
@{list}    Create List    Apple    Banana    Grape
FOR ${var} IN @{list}
Continue For Loop If "${var}" == "Banana"
log ${var}
END #结果如下
20200408 20:07:36.902 : INFO : @{list} = [ Apple | Banana | Grape ]
20200408 20:07:36.903 : INFO : Apple
20200408 20:07:36.904 : INFO : Continuing for loop from the next iteration.
20200408 20:07:36.906 : INFO : Grape

RF(For 循环)的更多相关文章

  1. rf中的条件判断与循环

    条件判断 run keyword if condition name *args ... ELSE IF conditon name *args ...ELSE name *args conditio ...

  2. RF之条件判断、初始化清除-4

    条件判断:        rf中用run keyword if 关键字做条件判断,以此来达到类似在python中if ...else...条件判断的功能. 注意:ELSE IF一定都是大写的,不然运行 ...

  3. Python3+RobotFramewok 循环判断以及Evaluate用法(三)

    本章主要介绍RF的循环,判断以及关键字Evaluate. 1. for循环 在RF中通过 :FOR 编写循环 :FOR ${i} in range 10 log ${i} @{list} create ...

  4. Linux 档案与目录管理

    『 cd /etc 』这个情况,这也就是所谓的『绝对路径』,他是从根目录连续写上来的一个情况,所以不论你在哪一个路径现执行这一个指令,都会将你移动到该路径下.那如果我是使用『 cd etc 』呢?那表 ...

  5. 复制、移动和删除:cp, rm, mv

    要复制文件,请使用cp(copy)命令.不过,cp命令的用途很多.除了单纯的复制之外,还可以建立连接文件(就是快捷方式),比较两个文件的新旧而予以更新,以及复制整个目录等等.至于移动目录与文件,则使用 ...

  6. [转]复制、移动和删除:cp, rm, mv

    转自:http://www.cnblogs.com/benio/archive/2010/07/27/1785929.html 要复制文件,请使用cp(copy)命令.不过,cp命令的用途很多.除了单 ...

  7. RF中for循环

    robotframework支持FOR循环语句,语法和Python的语法基本相同,但robotframework中,“FOR”关键字前面需要增加一个“:”,写成“:FOR”,其它与Python的语法相 ...

  8. RF之关键字、变量、循环

    关键字的使用: RF的能力是由关键字提供的,所以,我们必须对RF的常用关键字有个了解 . 最常用的关键字就在RF的关键字中.http://robotframework.org 其中Builtin是标准 ...

  9. Robot Framework(13)- RF 循环的详细使用

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 前言 RF用   ...

随机推荐

  1. P4015 运输问题【zkw费用流】

    输入输出样例 输入 #1复制 2 3 220 280 170 120 210 77 39 105 150 186 122 输出 #1复制 48500 69140zuixiaofeiyo 说明/提示 1 ...

  2. PHP程序员的能力水平层次(二)

    PHPer的定义:PHPer是以PHP程序编写为主要工作,其他方面略有涉及的一种职业人士,大家所说的程序猿. 对PHPer的等级划分 PHP 爱好者 (半个PHPer) PHP 初学者 (PHP Be ...

  3. vue项目中使用bpmn-流程图预览篇

    前情提要 上文已经实现了节点操作的前进.后退.导入.导出等操作,今日来实现“流程图预览”,以及视图的放大缩小 前提:项目安装过bpmn,安装可见上篇文章 实现要点 bpmn提供了两个神器:Modele ...

  4. vue中的ref属性

    1.什么是ref? ref是用于快速定位到dom结构,vue中一般不去操作dom结构,他是数据驱动的.jQuery会疯狂操作DOM {{msg}} mounted(){ let h = this.$r ...

  5. 并发工具——CyclicBarrier

    本博客系列是学习并发编程过程中的记录总结.由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅. 并发编程系列博客传送门 CyclicBarrier简介 CyclicBarrie ...

  6. PHP反序列化漏洞总结

    写在前边 做了不少PHP反序列化的题了,是时候把坑给填上了.参考了一些大佬们的博客,自己再做一下总结 1.面向对象 2.PHP序列化和反序列化 3.PHP反序列化漏洞实例 1.面向对象 在了解序列化和 ...

  7. Redis分布式锁的正确姿势

    1. 核心代码: import redis.clients.jedis.Jedis; import java.util.Collections; /** * @Author: qijigui * @C ...

  8. tensorflow1.0 构建神经网络做非线性归回

    """ Please note, this code is only for python 3+. If you are using python 2+, please ...

  9. 即时通信WebSocket 和Socket.IO

    WebSocket HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯. 在2008年诞生,2011年成为国际标准. 现在基本所有浏览器都已经支持了. We ...

  10. Install go1.5 for CentOS7

    https://golang.org/doc/install 下载好后,通过FTPS,传递到Linux里去,放哪里随便你自己,因为被墙了,所以在Windows通过旋风下载了这个玩意儿. 你也可以: w ...