前言:
最近项目中用到了Python 著名的RobotFramework 框架(以下简称RF),特做一些总结如下:
RF简介
RF框架是用python语言开发的一套基于关键字操作的自动化测试框架, 适用于python2.7 , python3.X等版本。
RF适合编码基础较弱的同学进行自动化测试,完全可以在不写代码的情况下完成UI自动化测试,接口自动化测试。
安装RF
本文以python2.7 下使用RF为例 (因为python3对于ride的支持还不稳定...)
1. 安装python2.7 /python3.7(不再赘述),安装好pip命令
2. 打开CMD,命令行模式CD到python2.7/Script 目录下
安装requests库: pip install requests
安装robotframework: pip install robotframework
安装wxPython: pip install wxPython
安装pywin32: pip install pywin32
安装pygments: pip install pygments
pip install robotframework-requests
pip install robotframework-ride
做UI自动化测试需要安装如下:
1.pip install robotframework-selenium2library
2.pip install robotframework-archivelibrary
3.pip install robotframework-SSHLibrary
4.pip install robotframework-ftplibrary
编写用例并执行就用ride就可以
注意事项:
1. 添加环境变量,路径为: C:Python37Scripts (python3里面你需要的库文件在site-packages 里面,所以需要添加: C:Python37Libsite-packages)
2. 在ride里面,F5可以查询你所需要的库 (写的时候最疼苦是没有自动引入,哎,这也算是一个大缺陷)
RF的简单使用
1. RF常用的库总结:
Robot Framework常用库简介
标准库
Robot Framework可以直接导入使用的库,包括:
• Builtin:包含经常需要的关键字。自动导入无需import,因此总是可用的
• Dialogs:提供了暂停测试执行和从用户的输入方式。
• Collections:提供一组关键词处理Python列表和字典。
• OperatingSystem:允许执行各种操作系统相关的任务。允许执行各种操作系统相关的任务,使各种操作系统相关的任务在robotframework正在运行的系统中执行。
• Remote:远程库接口的一部分。没有自己的任何关键字,作为robotframework和测试库之间的代理的特殊库。实际测试库可以在不同的机器上运行,可以使用任何编程语言支持XML-RPC协议的实现。
• Screenshot:提供关键字来捕获和存储桌面的截图。
• String:用于处理字符串并验证它们的内容的库,用于生成、修改和验证字符串
• Telnet:支持连接到Telnet服务器上打开的连接执行命令。
• XML:用于生成、修改和验证XML文件的库。
• Process:系统中运行过程的库。
• DateTime:日期和时间转换的库,支持创建和验证日期和时间值以及它们之间的计算
扩展库
Robot Framework需要下载安装后才能使用的库,包括:
• Android library:所有android自动化需要的测试库,内部使用的是Calabash Android
• iOS library:所有iOS自动化需要的测试库,内部使用Calabash iOS服务
• appiumlibrary:Android和iOS测试库,内部使用的是appium
• HTTP library (livetest):内部使用LiveTest工具的HTTP测试的库。
• HTTP library (Requests):内部使用request工具的HTTP测试的库。
• MongoDB library:使用pymongo和MongoDB交互的库。(MongoDB是一个基于分布式文件存储的数据库)
• Database Library (Java):基于Java的数据库测试库。也可使用Jython和Maven central.
• Database Library (Python):基于Python数据库测试库。支持任何Python解释器,包括Jython。
• watir-robot:使用Watir的工具的Web测试库。
• seleniumlibrary:Web测试库,内部使用比较流行的selenium工具。利用早期的selenium1.0和本身已经过时。
• selenium2library:使用selenium2的Web测试库。替换了大部分老的seleniumlibrary。
• selenium2library java:selenium2library的java接口
• Django Library:为Django的库,一个Python Web框架。
• sudslibrary:一种基于泡沫基于SOAP的Web服务的功能测试库,动态的SOAP 1.1的客户端。
• Archive library:处理.zip和.tar压缩包的库。
• Diff Library:比较两个文件的库。
• FTP library:Robot Framework上测试和使用FTP服务的库。
• SSHLibrary:通过SSH连接的在远程机器上执行命令。还支持使用SFTP进行文件传输
• rammbock:通用的网络协议测试库;提供简单的方法来指定网络数据包,并检查发送和接收数据包的结果。
• imagehorizonlibrary:跨平台、基于图像识别的GUI自动化纯Python库。
• autoitlibrary:Windows的GUI测试库,使用AutoIt的免费工具作为驱动。
• Eclipse Library:使用SWT窗口小部件测试Eclipse RCP应用程序的库。
• robotframework-faker:一个服务faker的库,faker的测试数据生成器。
• swinglibrary:用Swing GUI测试java应用程序库
• remoteswinglibrary:使用swinglibrary库测试和连接一个java进程,尤其是java web
start的应用。(Java Web Start 是基于 Java 技术的应用程序的一种部署解决方案,它是连接计算机和 Internet
的便捷通道,允许用户在完全脱离 Web 的情况下运行和管理应用程序)
2. 引用位置:
这里注意下: 如果你引入的库不存在或者路径错误,会显示成红色
2. RF 自有关键字的调用:
一、实用函数
关键字 |
含义 |
实例 |
备注 |
Click Button |
点击按钮 |
Click Button 注销 |
这里“注销”的class属性,必须是Button |
Click Element |
点击元素 |
Click Element [locator] |
Locator可以是resource-id,也可以是xpath;但必须是当前页面唯一存在的;一般用该关键字可以完成所有元素点击 |
Click Text |
点击文字 |
Click Text 我的 |
“我的”需要是当前页面唯一存在的 |
Input Text |
在指定元素中输入文本 |
InputText [locator] 111111 |
Locator可以是resource-id,也可以是xpath |
Swipe |
滑动屏幕 |
Swipe 1000 1800 100 1800 |
|
Get Text |
获取某标签内容 |
${account} Get Text [locator] |
获取内容后存储到指定变量中,从而在后续脚本中调用该内容 |
Select Frame UnSelect Frame |
选择一个frame进行跳转 |
|
|
${a} | Ser variable | 123 | 设置一个参数 |
:FOR | ${a} | in range | 10 |
log | 111 | ||
RequestsLibrary.Post Request | api | /api/login | data=${a} |
二、校验函数
关键字 |
含义 |
实例 |
备注 |
Element Name Should Be |
检查元素的name属性 |
Element Name Should Be [locator] 登录 |
locator可以是resource-id,也可以是xpath |
Element Should Be Enabled |
检查元素是否可用/可见 |
Element Should Be Enabled [locator] |
|
Page Should Contain Element |
检查界面包含某些元素 |
Page Should Contain Element [locator] |
|
Page Should Contain Text |
检查界面包含某些文字信息 |
Page Should Contain Text 预约挂号 |
|
Page Should Not Contain Element |
检查界面不包含某些元素 |
Page Should Not Contain Element [locator] |
|
Page Should Not Contain Text |
检查界面不包含某些文字信息 |
Page Should Not Contain Text 预约挂号 |
三、等待函数
关键字 |
含义 |
实例 |
备注 |
Wait Until Page Contains |
等待直到界面中包含某些文字,才进行下一步 |
Wait Until Page Contains 预约挂号 |
默认等待时间为5s |
Wait Until Page Contains Element |
等待直到界面中包含某些元素,才进行下一步 |
Wait Until Page Contains Element [locator] |
locator可以是resource-id,也可以是xpath |
Wait Until Page Does Not Contain |
等待直到界面中不包含某些文字,才进行下一步 |
Wait Until Page Does Not Contain 预约挂号 |
|
Wait Until Page Does Not Contain Element |
等待直到界面中不包含某些元素,才进行下一步 |
Wait Until Page Does Not Contain Element [locator] |
|
3.RF结果简介
如上图所示,RF执行的时候点Start就行,注意输出路径不支持中文,需要使用 -d C:\log 进行修改,否则会报错
执行的时间,输出的log以及结果,在输出路径里面都有,不再赘述。
4. RF高级用法
1. 自定义第三方库
2. 读取Excel,text 测试数据文件
然后导入resource, ExcelLibrary库常用关键字
Open Excel 打开Excel文件
Get Row Count 获取行数
Get Column Count 获取列数
Get Row Values 获取某一行的值
Get Column Values 获取某一列的值
Read Cell Data By Coordinates 通过列行编号获取值
Read Cell Data By Name 按名称读取单元格数据
ExcelLibrary库使用注意事项:
1.只支持xls格式的Excel文档
2.Excel表格中的数值,代码读取后会显示为浮点型
如123,读取后显示为123.00,造成传参不一致
解决方案:设置单元格格式---->文本
3.读取每行或每列数据,存储到list变量中,是一个二维数组
如(A1,123)(B1,张三)
4.数组的位置编号都是从0开始的
参考资料: