一、RF简介和特点

简介:RF是一个基于python语言开发的,可扩展的,以关键字驱动模式的自动化测试框架。

关键字驱动和数据驱动的区别?
关键字驱动:表示把项目中的一些逻辑封装成关键字(函数),调用不同的关键字组合
实现不同的业务逻辑,从而驱动测试用例执行

数据驱动:把测试用例里面的数据提取到excel/yaml文件里面,然后通过excel/yaml中的
数据驱动测试用例执行

特点:
  1. 编写用例简单,可以以robot,txt,tsv/html的格式编写用例
  2. 自动生成HTML格式的测试报告和日志。
  3. 除了自带的类库外,还有很多的实用的扩展类库
  4. 可以根据项目需要自定义一些关键字
  5. 可以使用GUI的方式运行,可以和svn,git以及jenkins持续集成

二、RF环境安装

注:以下是小编安装的版本,亲测有效,不存在版本兼容的问题
1.安装python3.6.8并且需要设置python的环境变量
2.使用管理员的身份打开dos窗口
    安装:pip install robotframework==3.1
    卸载:pip uninstall robotframework==3.1
3.在dos窗口中安装RIDE工具
    安装:pip install robotframework-ride==2.0
    卸载:pip uninstall robotframework-ride==2.0
4.运行方式
    dos窗口输入ride.py或者找到ride.py的文件单击右键选择打开方式python,
    双击图标也行(小编这里没有图标)

以上安装的时候速度慢时:改变下载源
国内下载源:
https://pypi.tuna.tsinghua.edu.cn/simple/   # 清华
http://pypi.doubanio.com/simple/  # 豆瓣
http://mirrors.aliyun.com/pypi/simple/  # 阿里云
http://pypi.hustunique.com/  # 华中理工大学
http://pypi.sdutlinux.org/ # 山东理工大学
https://pypi.mirrors.ustc.edu.cn/simple/ # 中国科学技术大学
http://mirrors.163.com/pypi/simple/ # 网易

eg:pip install robotframework==3.1 -i 下载源路径

三、RF的使用

1.创建项目:New Project
注:输入项目名称,选择项目路径,选择dictionary目录

image.png

2.创建测试套件(套件下面是自己编写的用例):New Suite
注:选择Filer

image.png

3.创建测试用例:N0ew Test Case

image.png

4.创建业务关键字(资源文件):New Resource
注:只能在文件夹下面创建,并且是txt格式,它是自定义关键字的载体

image.png

5.创建用户自定义关键字:New User Keyword

测试套件Edit页签,主要有四大块

image.png

四、RF常用类库

1.标准库:不需要安装,直接用,RF自带
Buitini (测试库)
Collections(集合库)
DateTime(时间库)
ScreenShot(截屏库)
标准库的位置:python安装目录\Lib\site-packages\robot\libraries
2.扩展库:需要通过 pip 安装库
web自动化测试:SeleniumLibrary,Selenium2Library
    Selenium2Library是SeleniumLibrary的简写版,SeleniumLibrayr是全面版,用全面版即可
Api接口自动化:RequestsLibrary
APP自动化测试:AppiumLibrary

安装方式:
pip install robotframework-seleniumlibrary
pip install robotframework-requests
pip install robotframework-appiumlibrary

这几个库的安装没有什么版本的要求,之前用以上命令安装即可,同时如果安装速度慢的话依然用下载源的方式来安装

扩展库的位置:python安装目录\Lib\site-packages

五、RF常用关键字的使用

快捷键:
1.搜索关键字的用法:F5
2.自动补全关键字:ctrl+shift+空格
常用关键字:
log:打印内容   Comment:注释  Set Variable:设置变量  Get Time:获取系统时间
slee:等待多久    Catenate:内容拼接    
Create List:创建列表有两种
1、${list1}    Create List    功能测试    自动化测试    性能测试
    log        ${list1}    
2、@{list2}    Create List    功能测试    自动化测试    性能测试
    log many    @{list2}

Create Dictionary:创建字典
Get Dictionary Keys:获取字典的key
Get Dictionary Values:获取字典的value
Get From Dictionary:根据key获取value
......

六、准备UI自动化测试的环境

1.通过pip安装扩展库:pip install robotframework-seleniumlibrary
2.下载谷歌浏览器(小编用的是谷歌,根据自己的情况选择浏览器)
3.下载谷歌浏览器的驱动
    注:谷歌浏览器的驱动必须和谷歌浏览器兼容
    驱动位置:chromedriver.exe放到python目录下面  eg:C:\python3
4.在RF的测试套件里面导入SelenuimLibrary

浏览器的安装包与驱动地址:
python安装包:https://www.python.org
Pycharm安装包:http://www.jetbrains.com/pycharm/download/
Selenium安装包:https://pypi.python.org/pypi/selenium    一般安装方式:pip install selenium
火狐浏览器(延长版):http://www.firefox.com.cn/download/#more
谷歌浏览器安装包:https://www.google.cn/chrome/
IE浏览器安装包:https://support.microsoft.com/zh-cn/help/17621/internet-explorer-downloads
谷歌浏览器驱动chromedriver.exe:http://npm.taobao.org/mirrors/chromedriver/
火狐浏览器驱动geckodriver.exe:https://github.com/mozilla/geckodriver/releases
IE浏览器驱动iedriverserver.exe:http://selenium-release.storage.googleapis.com/index.html

七、元素定位

id、name、 link_text、 partial_link、xpath、 css、 class_name、 tag_name 
前提:元素必须唯一

以下百度为例
xpath:
1.通过绝对路径定位:几乎用不着
2.通过相对路径定位://form/sapn/input

Input Text    xpath=//form/span/input    hellowrod!
3.通过元素属性定位://input[@autocomplete="off"] 或者 //input[@autocomplete="off" and @class="s_ipt"] 

Input Text    xpath=//input[@autocomplete="off"]    hellowrod!
4.通过部分属性定位://input[starts-with(@aotocomplete,"of")]   或者  //input[contains(@aotocomplete,"of")]

Input Text    xpath=//input[contains(@aotocomplete,"of")]   hellowrod!
5.通过文本定位://a[text()="新闻"]

Click Element    //a[text()="新闻"]
css:
1.通过绝对路径定位:几乎用不着
2.通过ID/class定位
    #id  .class
3.通过元素属性定位:input[autocomplete="off"]  或者  input[autocomplete="off"][class="s_ipt"] 
4.通过部分属性定位:input[aotocomplete^="of"] 或者 input[aotocomplete$="of"] 或者 input[aotocomplete*="of"]
5.通过子元素定位:div#s-top-left a:nth-child(3)

八、元素特殊的处理

frame框架的处理
进入框架:Select Frame    跳出框架:Unselect Frame

下拉框:
Select From List By Lable
Select From List By Index
Select From List By Value

定位一组元素:
Get WebElements

处理弹出窗口:(alert  confirm  promp)
Handle Alert

九、项目的三层架构

1、页面元素层  2、业务逻辑层 3、测试用例层
业务逻辑层调用页面元素层,测试用例层调用业务逻辑层

分层的意义?
实现页面元素,公共方法,公共数据,测试用例集中式的管理。
增加脚本的重复利用率。
增加脚本的可维护性。







测试菜鸟
10 声望3 粉丝

测试小白爱测试!!!