某互联网后台自动化组合测试框架RobotFramework+Python+Sikuli
一、RobotFramework
1.工具介绍:
Robotframework在测试中作为组织测试用例和BDD关键字的平台,主要使用RIDE进行管理,它不是一个工具,而仅仅是一个框架,使用Python进行开发,同时支持WEB测试(Selenium)、Java GUI 测试,启动线程、终端、SSH等、支持BDD模式,相关的框架组织结构如下:

安装目录结构如下:

2.用例脚本组织:
针对Selenium, RobotFrameWork有第三方库:selenium2library,支持目前主流的页面元素,使用关键字的组织方式,能够帮助我们更快的组织用例,下图是小区无忧的部分自动化脚本:

说明:
MySuite下为各个用例
用例又被拆分为很多流程:Flow.txt
用例流程又被拆分为更细的步骤:例如图片中的add_banner_step、 add_msg_data_step、Login_step
3. 用例分层:
组织用例à用例流程à用例步骤,用例使用分层实现,并且仅仅调用关键字进行组织,这样将各个PAGE的事件和元素之封装在各自的步骤中,如果界面元素有任何改动,便于维护和更新,减少变动带来的影响。(至于界面元素怎么定位,请GOOGLE相关的Selenium2的相关知识,另外需要重点说的是,如果没有经验的话,最好自己使用Python写一些相关的代码,不要直接就上RIDE,你可以使用Python+Selenium2+unittest框架)
4.数据分层:
使用EXCEL组织测试数据,将测试数据独立出来,这里用到了自己编写的Python脚本,具体用法如下:
引入自定义的脚本,作为Library,在F5关键字中能够识别:

使用关键字,定义各个Excel和定位Sheet,根据字段名获取Sheet的字段名,以传参的方式调用数据:

Excel定义的位置:

具体的Excel内容:

这样实现了数据的分层,以后,需要在数据层修改数据,直接表格修改就可。
5.BDD模式:
用例也支持BDD模式的组织方式,如图:

二、Python
因为RobotFrameWork是使用Python开发的,所以使用Python作为扩展的主要脚本语言,主要目的是扩展满足相关项目的测试要求的脚本,例如,上面所提到的对Excel读取数据的扩展脚本:

会遇到的可能的问题:中文识别问题,目前来说,由于Python本身的局限,我们测试的软件基本是中文,所以有可能会遇到中文UNICODE问题,对于这个问题,一般是这样解决:
在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容:
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
如果遇到个别无法彻底转换的如下处理:

三、Sikuli
Sikuli的引进,其实比较纠结,因为对于小区无忧中会不会比较多的使用不规范的控件和过多的模态窗口(模态窗口问题还好解决,可以通过异步JS和Selenium2的Handle方法基本解决)是一个未决的问题。Sikuli是非RobotFrameWork的官方工具,所以需要使用远程Library的方式进行调用:
组织目录:


启动远程库:

Ride中导入远程库:

定义Sikuli截取的图片的路径:

使用Sikuli远程库方法:

对应操作的控件:

四、持续集成
使用jenkins进行持续集成,jenkins本身提供了RobotFrameWork的插件,只要定义好相关的参数就可以了,运行通过命令行的方式进行,不会依赖平台。

待续。。。。。。
某互联网后台自动化组合测试框架RobotFramework+Python+Sikuli的更多相关文章
- 某互联网后台自动化组合测试框架RF+Sikuli+Python脚本
某互联网后台自动化组合测试框架RF+Sikuli+Python脚本 http://www.jianshu.com/p/b3e204c8651a 字数949 阅读323 评论1 喜欢0 一.**Robo ...
- 基于Python的接口自动化-unittest测试框架和ddt数据驱动
引言 在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条接口测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行,还有在运行大量的接口测试用 ...
- [原创] Web UI自动化应用测试框架实践 - 概览
之前为我们部门做的一个UI框架.不能纯粹解读为框架,主要是做了一些简单的分层设计,以解决稳定性.降低复杂性.提升可维护性以及快速构建测试用例等实际问题. 主要部分:1. 测试数据.主要提供测试类库需要 ...
- Selenium+Python+jenkins搭建web自动化测测试框架
python-3.6.2 chrome 59.0.3071.115 chromedriver 2.9 安装python https://www.python.org/downloads/ (Wind ...
- 基于POM---UI测试框架
为什么会出现这个半自动化UI测试框架 我进入公司的前一个月从事的手工测试,为了提高自己的测试效率在工作时间之外写了一个半自动化的UI测试(害怕手工测试做久了,忘记自己还学过软件开发), 为什么我把它叫 ...
- 用 Python 测试框架简化测试
用 Python 测试框架简化测试 摘要:本文将向您介绍了三种流行 Python 测试框架(zope.testing,py.test,nose)的基本特性,并讨论新一代的测试风格. 最近出现了行业级的 ...
- RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)
好久没有继续分享关于自动化测试相关的东西了,自动化在现今的测试领域已经越来越重要了,大部分公司在测试岗位招聘中都需要会相关的自动化测试知识.而 RobotFramework自动化测试框架 是自动化测试 ...
- Web自动化之Headless Chrome测试框架集成
使用Selenium操作headless chrome 推荐 简介 WebDriver是一个W3C标准, 定义了一套检查和控制用户代理(比如浏览器)的远程控制接口,各大主流浏览器来实现这些接口以便调用 ...
- RobotFramework自动化测试框架-Selenium Web自动化(三)关于在RobotFramework中如何使用Selenium很全的总结(下)
本文紧接着RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)继续分享RobotFramewor ...
随机推荐
- IDEA Maven 三层架构 1、基本的Archetype 搭建
JDK:1.8 Maven:3.3.9 三层架构:基于 SpringMVC 的 UI 层.业务逻辑层以及数据访问层 从对 Maven 的了解可以看出,三层架构的创建在于对文件夹的合理安排,他们通常是主 ...
- canvas图表详解系列(2):折线图
本章建议学习时间4小时 学习方式:详细阅读,并手动实现相关代码(如果没有canvas基础,需要先学习前面的canvas基础笔记) 学习目标:此教程将教会大家如何使用canvas绘制各种图表,详细分解步 ...
- 不使用数据结构反转栈 递归 CVTE实习 CVTE是一家什么公司
本文因为垃圾csdn标题字限制,标题写不好.本文想说一个算法,和我在CVTE的实习,我看到CVTE是一家什么公司.如果想要喷我的,可以留言,我不会理.如果想喷公司,可以在博客评论或发到我邮件linde ...
- win10 uwp 随着数字变化颜色控件
我朋友在做一个控件,是显示异常,那么异常多就变为颜色,大概就是下面的图,很简单 首先是一个Ellipse,然后把他的颜色绑定到Int,需要一个转换,UWP的转换和WPF差不多,因为我现在还不会转换,就 ...
- 有关Datatabled的合并,排序和删除重复行的方法
当某些操作需要涉及合并Datatable时,我们应该如何操作呢? 下面是自己总结的一些方法: 当有两表dt1和dt2的时候,使用dt1.Merge(dt2) 可以将表1表2中相同的合并在一起 排序方法 ...
- java中的static关键字详解
static对于我们这些初学者在编写代码和阅读代码是一个难以理解的关键字,也是大量公司面试题最喜欢考的之一.下面我就来就先讲述一下static关键字的用法和我们初学者容易误解的地方. static关键 ...
- spring MVC 环境搭建
绿色版Spring MVC(单纯的springMVC) 一.导包,为了获取请求数据多添加一个包 二.web.xml配置 <?xml version="1.0" encodin ...
- PHP设计模式二:单例模式
一.什么是单例模式 作为对象的创建模式,单例模式确保某一个类只有一个实例,并且对外提供这个全局实例的访问入口.它不会 创建实例副本,而是会向单例类内部存储的实例返回一个引用. 二.PHP单例模式三要素 ...
- Linux中main是如何执行的
Linux中main是如何执行的 这是一个看似简单的问题,但是要从Linux底层一点点研究问题比较多.找到了一遍研究这个问题的文章,但可能比较老了,还是在x86机器上进行的测试. 原文链接 开始 问题 ...
- github和本地仓库关联
1.安装git 2.在github上注册账号 3.github上创建repository 4.克隆github上的repository 5.在target directory中右键打开git gui