一、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目录
2.创建测试套件(套件下面是自己编写的用例):New Suite
注:选择Filer
3.创建测试用例:N0ew Test Case
4.创建业务关键字(资源文件):New Resource
注:只能在文件夹下面创建,并且是txt格式,它是自定义关键字的载体
5.创建用户自定义关键字:New User Keyword
测试套件Edit页签,主要有四大块
四、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、测试用例层
业务逻辑层调用页面元素层,测试用例层调用业务逻辑层
分层的意义?
实现页面元素,公共方法,公共数据,测试用例集中式的管理。
增加脚本的重复利用率。
增加脚本的可维护性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。