1.RF框架
全称robot framework,一个基于python开发的,自动化测试框架,这个框架可以做:web自动化,接口自动化,APP自动化。
github官网
1).安装python 检查python环境 python -V或 pip -V
2).安装rf(dos命令里面输入) pip install robotframework 安装图形界面库 pip install robotframework-ride
3).启动RF,安装完成后有图标直接双击运行,找到ride.py运行。
4).RF项目
项目文件夹(project )->测试集(test suite)->测试用例(test case)
5). RF功能详解
(1).设置区
引用区:
参数区:
数据区:
2、RF关键字驱动
1).什么是关键字? 有特殊含义的单词
2).什么是关键字驱动?关键字驱动脚本是比较复杂的数据驱动技术的逻辑扩展,封装了各种基本操作,每个操作由相应的函数实现,开发脚本时不需要关心这些基础函数,而是用一系列关键字指定执行的任务。
用一个关键字完成某一个功能,以期望解决我们的问题。
3)、RF基础数据类型
(1)、变量 是计算机语言中能存储计算结果或能表示抽象概念。变量可以通过变量名访问。
赋值 ${x1}=set variable 123 等价于 设x1=123。 运算: ${x1}=evaluate ${x1}+${x2}
应用:获取网页的文本,然后断言。
(2)、数组 是有序的元素序列。用于区分数组的各个元素的数字编号称为下标。下标是从0开始。
@{list}= create list 1 2 应用:调用接口传参数的时候,可以用数组。
(3)、字典 数据字典:可以根据键,得到值;也可以更新键的值。
&{map}=create dictionary aa=AA bb=B B $(map['aa"])
应用:Json格式解析之后就是字典。
4)、分支和循环
(1)、条件运算 数值比较:大于:${x}>${y} 等于:${x}==${y} 小于:${x}<${y}
字符串比较 等于:"aa"=="bb" 包含: should contain
(2)、选择结构 IF语句 Run keyword if 如果条件为True,则执行关键字。
IF...ElSE Run keyword if
ElSE IF
ElSE IF
5)、RF两种数据结构(需要使用到的库:Collections)
线性结构 数组 @{list}:1 2 3 4 5 添加元素: Append To List
键值对结构 字典 &{map}:a=A b=B c=C 添加键值对到字典:Set To Dictionary
6)、数据结构应用
for 循环 循环就是一直重复操作
:FOR ${i} IN 1 2 3 4 5
:FOR ${i} IN RANGE 1 5
Exit for loop
数据结构遍历
数组遍历 :FOR ${i} in @{list} 字典遍历: @{keys} = Get Dictionary Keys ${map} 然后遍历key
7)、字符串处理和异常
(1)、字符串的拼接
变量 #临时拼接: aaa ${x} bbb #变量拼接:${str3}= Catenate SEPARATOR= ${str1} ${str2}
(2)、字符串包含
判断s1里面包含s2 '${s1}'._contains_('${s2}')
RF常用类库
1.标准库:不需要安装,直接用,RF自带。
BUitini(测试库) Collections(集和库) Datatime(时间库) ScreenShot(截屏库)
标准库的位置:C://python373\lib\sit-pakage\robot\librarys
2、扩展库:需要安装后才能使用
Web自动化测试:SeleniumLibrary、Selenium2Library、Selenium2Library for java等
API接口自动化:RequestsLibrary
APP自动化测试:AppiumLibrary
扩展库的位置:C://python373\lib\sit-pakages
准备UI自动化测试环境
1:通过pip安装扩展库:pip install robotframework-seleniumlibrary
2:下载谷歌浏览器
3:下载谷歌浏览器驱动(注意:谷歌浏览器的驱动必须和谷歌浏览器兼容)把chromdedriver.exe放到python目录下。
4:在RF的测试套件里面导入SeleniumLibrary
元素定位
id 、name、link_test、partial_link_text、xpanth、css、class_name、tag_name
前提:元素必须唯一
xpath:
1.通过绝对路径定位:这种方式几乎不用
2.通过相对路径定位://form/span/input
3.通过元素属性定位://input[@autocomplete="off"] //input[@autocomplete="off" and @class="s_ipt"]
4.通过部分属性定位://input[starts-with(@autocomplete,"of")] //input[contains(@autocomplete,"of")]
5.通过文本定位://a[text()="新闻"]
css:
1.通过绝对路径定位:这种方式几乎不用
2.通过ID或者class定位:#ID .class
3.通过元素属性定位:input[autocomplete="off"] input[autocomplete="off" a][ class="s_ipt"]
4.通过部分属性定位:input[autocomplete^="of"]以...开始 input[autocomplete$="of"] 以....结束 input[autocomplete*="of"] 包含....
5.通过子元素定位:div#s-top-left a:nth-child(3)
项目的三层架构
1.三层架构指的是什么?
(1)页面元素层 (2)业务逻辑层(3)测试用例层 业务逻辑层调用页面元素层,测试用例层调用业务逻辑层
2、为什么需要分层,分层的意义在哪里?
实现页面元素,公共方法,公共数据,测试用例集中式管理。增加脚本的重复利用率,增加脚本的可维护性.
RF非GUI的方式(命令行)运行
pybot -d 测试报告的路径 测试用例的路径
Jenkins : Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。