zoukankan      html  css  js  c++  java
  • RF(For 循环)

    一、介绍:RobotFrameWork 支持 FOR 循环语句,语法和 Python 的语法基本相同,但 RobotFrameWork 中,需要 END 结束,其它与 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
  • 相关阅读:
    HBase 高性能加入数据
    Please do not register multiple Pages in undefined.js 小程序报错的几种解决方案
    小程序跳转时传多个参数及获取
    vue项目 调用百度地图 BMap is not defined
    vue生命周期小笔记
    解决小程序背景图片在真机上不能查看的问题
    vue项目 菜单侧边栏随着右侧内容盒子的高度实时变化
    vue项目 一行js代码搞定点击图片放大缩小
    微信小程序进行地图导航使用地图功能
    小程序报错Do not have xx handler in current page的解决方法
  • 原文地址:https://www.cnblogs.com/ZhengYing0813/p/12656691.html
Copyright © 2011-2022 走看看