RobotFrameWork介绍和使用(二)

发布于:2022-11-09 ⋅ 阅读:(8) ⋅ 点赞:(0) ⋅ 评论:(0)

RobotFrameWork介绍和使用(二)–关键词总结

关键字

变量

变量声明

​ 因为RobotFrameWork是由Python所编写的,在RF当中变量的声明和使用也与在Python当中类似。变量不需要特定的声明,只要有初始化赋值即可使用。

变量类型

​ 在RF当中主要有三种类型:ScalarListDict

​ 在RF当每种变量都需要用特定的‘变量标识符’来表明该变量的类型:

  • Scalar变量:${变量名}。表示一个数据。作为参数传递时,表示一个参数。
  • List变量:@{变量名}。表示一组数据。作为参数传递时,有几个数据就是几个参数。
  • Dict变量:&{变量名}。表示一组键值对数据。在作为参数传递时,有几个键值对就是几个参数。

变量作用域

​ 在通常情况下,每个人变量默认都为全局变量。但具体变量还需要根据具体定义的位置来确定其作用域。

  1. 一个Case里面的变量:作用域在这整个Case内部;

  2. 一个UserKeyWord里面的变量:作用域在这个UserKeyWork内部。只要引用了这个资源文件的目录或Suite都可以使用这些变量;

  3. 一个文件型Suite里面的变量:作用域在这个Suite内部,,其下所有的Case都可以使用(一种是定义在目录型Suite下的,一种是定义在资源文件下的,资源文件下定义的变量可以通过调用资源文件来使用)

  4. 一个目录型Suite里面的变量:作用域在这个目录里面(这种定义出来是没什么意义的:它下面的文件型Suite是无法使用这些变量的)

    ​ 变量的作用域是可以改变的。通过一些关键字可以对变量进行作用域的改变

    1. Set Global Variable:设置为全局变量。设置后这个变量在所有的测试用例和测试套件中都可以使用。
    2. Set Suite Variable:设定为File Suite级变量。设置后这个变量在当前文件Suite内都可以使用。
    3. Set Test Variable:设置Case级变量。设置后这个变量在当前Test Case内可以使用。

@{lists}和${lists}的区别

  1. 相同点:

    @{}列表类型和${}列表类型都可以用来创建列表变量,均可通过Set VariableCreate List来创建。

  2. 不同点:

    1. Scalar类型:值里面不管有多少个元素,都是一个变量值;
    2. List类型变量:值里面有多少个元素就有多少个元素;
    3. ${List}可以看作一个列表整体,一个列表就是一个参数;@{List}是将列表拆成一个个单独的元素,每个元素都是一个参数。
    4. ${List}在Python里面就是一个List(一个整体),然后@{List}就是展开其List中的每个元素,作为多个参数传入,和*args一样效果,在Python里叫可变参数。

判断关键字

条件判断-IF

​ 在RF当中,使用Run Keyword If关键字做条件判断。

语法:

run keyword if + python条件表达式 + 关键字 + 关键字所需参数

示例:

*** Test Cases ***

Test1
	run keyword if    1>0       log		条件判断测试1

判断条件-ELSE分支

语法:

run keyword if + python条件表达式 + 关键字 + 关键字所需参数
... ELSE + 关键字 + 关键字所需参数

有个坑,在RF当中,运用变量进行对比时,需要使用如下方法引用变量

*** Test Cases ***
Test2
	${var}      set variable    hello RF
	run keyword if      'hello' in $var and 'rf' in $var     log to console    判断正确
	...     ELSE    log to console    判断错误

引用变量时,不需要使用{}。

判断条件-ELSE IF

语法:

run keyword if + python条件表达式 + 关键字 + 关键字所需参数
... ELSE IF + 关键字 + 关键字所需参数
... ELSE + 关键字 + 关键字所需参数

循环关键字

For循环

在RF当中没有while循环,如果需要使用到while循环去判断某一个值为真时,可以采用for循环来代替。

语法:

For 变量  IN  序列(or 列表)
       关键字 参数值
       Exit for loop if 判断条件


For 变量  IN RANGE 循环限量
                关键字  参数值
	Exit for loop if 判断条件

跳出循环或继续循环

在RF当中Exit for loop关键字相当于Python当中的break

而RF当中的Continue for loop关键字相当于Python当中的continue

而配合判断条件来使用的话,可以使用以下:

exit for loop if 关键字其实就相当于 run keyword ifexit for loop关键字的结合
continue for loop if 关键字相当于 run keyword ifcontinue for loop关键字的结合


Web关键字(SeleniumLibrary)

​ 在RF当中,SeleniumLibrary是第三方库,用于在RF当中支持Web自动化的操作,因为RFPython所写的,所以对于这个第三方包的底层同样也是为Python当中的Selenium包。

​ 而在RF当中对网页的定位,使用的方法同selenium的方法,通常使用XPATHIDTAGNAMECSS_Select

​ 在SeleniumLibrary当中,可以查看到所有的内置关键字,在目前版本当中共有180+个关键字。可以通过以下文件路径查看源码。

在这里插入图片描述

1.元素定位的方法

RobotFrameWork当中,有以下的定位方法。整体的定位方法如下:

定位策略 匹配方法 定位示例
id 元素的id属性 id=example
name 元素的name属性 name=example
identifier 元素的id或name属性 identifier=example
class 元素的class属性 class=example
tag 元素的标签名称 tag=div
xpath xpath定位表达式 xpath=//div[@id=example]
css css selector定位表达式 css=div#example
dom DOM表达式 dom=document.images[5]
link 精确匹配链接元素的文本内容 link=The example
partial link 部分匹配链接元素的文本内容 partial link=he ex
jquery jQuery表达式 jquery=div.example

2.浏览器和窗口操作关键字

关键字 关键字说明
open browser 打开浏览器并访问系统地址。url:网站地址,browser:浏览器类型
close browser 关闭浏览器
maximize browser window 当前窗口最大化
get window size 获取当前窗口的大小
set window size 设置窗口大小
get window handles 获取浏览器中,所有窗口的句柄
switch window 切换窗口。可根据窗口的句柄、标题、名称等切换
get window names 获取浏览器,所有窗口的名称
get window titles 获取所有窗口的标题
get locations 获取所有窗口的url

3.对页面元素进行操作

关键字 关键字说明
click ement 点击元素
input text 在元素中输入文本值
get element attribute 获取元素的某一个属性值
get element size 获取元素的大小
get value 获取元素的value属性值
get text 获取元素的文本内容
clear element text 清除元素的文本值
get webelement 获取一个元素对象。WebElment对象
get webelements 获取匹配的所有元素对象。WebElment对象
set focus to element 元素获取焦点
double click element 双击元素
scroll element into view 滚动元素到可见区域
drag and drop 将一个元素拖拽到另一个元素区域中
mouse over 鼠标悬浮在元素上
press keys 键盘按键操作

4.select\frame\alert表格等操作关键字

关键字 关键字说明
get list items select/option元素中,获取所有的options选项
select from list by index select/option元素中,根据下标来选择option选项
select from list by value select/option元素中,根据value属性来选择option选项
select from list by label select/option元素中,根据文本内容来选择option选项
select frame 切换到指定的iframe当中
unselect frame 退出iframe,切换到默认的html页面中
handle alert 关闭alert弹出框
input text into alert 输入文本到alert弹框中,并关闭alert弹出框
choose file 在上传文件的输入框中(input元素的type为file)输入文本地址
get table cell 获取表格的单元格值。行号和列号起始值为1.包含表头和表尾所对应的行

5.元素等待关键字

关键字 关键字说明
wait for condition 等待条件成立:条件为js表达式,表达式的结果要为布尔值
wait until element is visible 等待指定的元素可见
wait until element is not visible 等待指定的元素不可见
wait until element is enabled 等待指定的元素可用
wait until element contains 等待指定的元素 包含 指定的文本内容
wait until element does not contain 等待指定的元素 不包含 指定的文本内容
wait until page contains element 等待页面 包含指定的元素
wait until page foes not contain element 等待页面 不包含指定的元素
wait until page contains 等待页面 包含指定的文本内容
wait until page does not contain 等待页面 不包含指定的文本内容

6.断言关键字

关键字 关键字说明
page should contain element 页面应当 包含指定的元素
page should not contain element 页面应当 不包含指定的元素
locator should match x times 元素定位表达式应该匹配 指定 次数
element should be visible 指定的元素 应当可见
element should not be visible 指定的元素 应当不可见
element should be enabled 指定的元素 应当可用
element should be disabled 指定的元素 应当不可用
element text should be 指定元素的文本内容 应当是 指定内容
element text should not be 指定元素的文本内容 应当不是 指定内容
element should be focused 指定的元素 应当为焦点状态

7.截屏类关键字

关键字 关键字说明
capture page screenshot 截取当前页面图片
capture element screenshot 截取指定元素的图片
set screenshot directory 设置截图存储目录

总结

关键字 关键字说明
capture page screenshot 截取当前页面图片
capture element screenshot 截取指定元素的图片
set screenshot directory 设置截图存储目录

总结

​ 在RobotFrameWork当中,上文基本上已经总结了常用的关键字,在后续会写一些RobotFrameWork的实际案例的分析。