初识Selenium(三)
浅谈基于Selenium的Web自动化测试框架
发表于:2011-4-25 10:58 作者:邵育亮 来源:51Testing软件测试网原创
字体:大 中 小 | 上一篇 | 下一篇 | 打印 |我要投稿 | 推荐标签: 软件测试 Selenium 测试框架 自动化测试
● 面临的挑战
从Google到Facebook,从Twitter到新浪微博,新一轮的互联网热潮正在全世界蔓延。随着云概念的日益清晰,越来越多的企业也已经摆脱了传统的C/S架构的应用框架而转投云计算的怀抱,Web已经成为我们生活和工作的重心。
有别于传统的桌面应用开发,Web应用因为其迭代周期短,需求变化快特殊性质,越来越多的Web开发团队在拥抱敏捷。同时随着前端技术Javacript,Html5,等不断被推出和完善,Web应用也变得越来越复杂很绚丽。这都给我们的测试带来了挑战。
√ 持续变化的需求
√ 复杂的UI(各种Javascript的插件,Ajax等)
√ 往往一个测试团队需要应付多个项目的测试工作
√ 非常有限的资源(人力,成本,等等…)
√ 跨平台(Linux,Mac,windows),跨浏览器(Firefox,Chrome,IE)
● 如何解决
如何在有限的资源下,又可以解决目前我们广大测试团队所面临的挑战呢?ThoughtWorks公司推出的开源Web自动化测试工具Selenium给我们带来了解决之道。Selenium基于Javascript并结合其WebDriver来模拟用户的真实操作,它有很好的处理Ajax的能力,并且支持多种浏览器(Safari,IE,Firefox,Chrome),可以运行在多种操作系统上面。
但是Selenium只是帮我们解决了执行层面的问题,在大规模的自动化测试项目中,我们还需要一个基于Selenium平台的测试框架,这个框架需要有以下的特性。
√ 支持数据驱动(DDT)
√ 对象库的分离和管理
√ 自动化测试脚本的组织和管理
√ 脚本的可重用(团队)和可配置
结合上面的需求,在这里介绍两个基于Selenium的Web自动化测试框架,它们都采用了数据驱动的设计方式,可以对于测试脚本的组织和执行进行灵活的管理和配置。
● Watip
Web Application Test In Python (http://code.google.com/p/watip),这个是我用Python写的一个简单的基于Selenium的数据驱动的测试框架。设计借鉴了之前一个朋友的测试框架的设计模式。采用XML形式来实现数据驱动和测试脚本的管理。
查看全文请点击下载:http://www.51testing.com/html/39/n-234539.html
● Ringo
Ringo是Google内部使用的一个基于Selenium的Web自动化测试框架,它在GTAC2010的大会上做了介绍。Ringo是用Java开发,结合了TestNG实现了数据驱动和高度可配置化,并且具有很好的对象库的管理的功能,是一个比较成熟的测试框架。
从Ringo的架构中可以看出,Ringo实现了数据,对象,操作的3者完全分离。并且对于一些公共的脚本进行了抽取和重构(SeleniumHelper),代码的复用率非常高。所有的测试用例都是可配置话。
初识Selenium(三)的更多相关文章
- python selenium 三种等待方式详解[转]
python selenium 三种等待方式详解 引言: 当你觉得你的定位没有问题,但是却直接报了元素不可见,那你就可以考虑是不是因为程序运行太快或者页面加载太慢造成了元素不可见,那就必须要加等待 ...
- 深入selenium三种等待方式使用
深入selenium三种等待方式使用 处理由于网络延迟造成没法找到网页元素 方法一 用time模块不推荐使用 用time模块中的time.sleep来完成等待 from selenium import ...
- 初识JavaScript(三)
初识JavaScript(三) 我从上一讲<初识JavaScript(二)>了解到了类型.值.变量的定义以及特点,本节我将学习到JavaScript中的算术运算.二进制浮点数和四舍五入的错 ...
- 初识Selenium(四)
用Selenium实现页面自动化测试 引言 要不要做页面测试自动化的争议由来已久,不做或少做的主要原因是其成本太高,其中一个成本就是自动化脚本的编写和维护,那么有没有办法降低这种成本呢?童战同学在其博 ...
- 初识Selenium(二)
---------------------------------------------------------------------------------------------------- ...
- 初识Selenium以及Selenium常用工具的简单介绍
一.为什么要学习自动化测试? 在互联网行业中敏捷开发小步快跑,快速迭代,测试环节中回归测试任务大繁琐,手工测试容易漏测,自动化测试可以提高测试效率保证产品质量. 二.学习的层次模型 1.单元自动化测试 ...
- Python selenium 三种等待方式详解
1. 强制等待第一种也是最简单粗暴的一种办法就是强制等待sleep(xx),强制让闪电侠等xx时间,不管凹凸曼能不能跟上速度,还是已经提前到了,都必须等xx时间.看代码: # -*- coding: ...
- Selenium 三种等待
问题 : 强制等待和隐式等待的区别怎么理解? 和pause有什么区别?什么时候适用pause? 第二篇文章更清楚一点. 以下内容引自: https://www.cnblogs.com/xu-jia-l ...
- Selenium三种等待元素的方式及代码,需要特别注意implicitlyWait的用法
一.显式等待 1.显式等待: 就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出Exception. 2.代码: new WebDr ...
随机推荐
- 翻扣告诉你外出旅游时实用的一些小tips
很多人出行都会带着大包小包,东西胡乱塞成一团,导致每次要用的时候都翻个遍.所以今天游游君为大家推荐几个出门旅行的小技巧. 收拾行李时,把鞋子放进浴帽里.浴帽很容易洗干净,还可以防止鞋子把干净的衣服弄脏 ...
- setsockopt()用法(参数详细说明)(转)
nt setsockopt(SOCKET s,int level,int optname,const char* optval,int optlen); s(套接字): 指向一个打开的套接口描述字le ...
- Git子模块引用外部项目
Git子模块(submodule)简介 经常有这样的事情,当你在一个项目上工作时,你需要在其中使用另外一个项目.也许它是一个第三方开发的库或者是你独立开发和并在多个父项目中使用的.这个场景下一个常见的 ...
- 第三次冲刺spring会议(第一次会议)
[例会时间]2014/5/20 21:15 [例会地点]9#446 [例会形式]轮流发言 [例会主持]马翔 [例会记录]兰梦 小组成员:兰梦 ,马翔,李金吉,赵天,胡佳
- mysql数据库的优化技术
表的设计合理化(遵从3NF)<3范式> 1NF:表的列具有原子性,不可再分解(列的信息不能分解,只要是关系型的数据库就自动满足1NF) 2NF:表中的记录是唯一的,就满足2NF(通常我们设 ...
- Windows下PHP(Thread Safe与Non Thread Safe)版本说明
转载“http://www.taoz11.com/archives/300.html” linux下直接下载源码,在服务器上编译即可,发现windows下有4个版本: VC9 x86 Non Thre ...
- JavaScript 构造函数 prototype属性和_proto_和原型链 constructor属性 apply(),call()和bind() 关键字this
1.构造函数: 通常构造函数首字母需要大写,主要是为了区别ECMAScript的其它函数.(高程三 P145) 构造函数与其他函数的唯一区别,就在于调用它们的方式不同.只要通过new来调用,任何函数都 ...
- IntelliJ IDEA 部署远程服务
今天产品遇到个本地无法重现,服务器上却出现的 Bug. 想起来 IDEA 有远程调试的功能就拿来用用. 教程如下: 1. 创建 tomcat service 2. 填入服务器的 IP 和端口 3. 确 ...
- 开源日志系统比较:scribe、chukwa、kafka、flume
1. 背景介绍 许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征: (1) 构建应用系统和分析系统的 ...
- word2vec c代码使用说明
摘要: 1 分词 将文本语料进行分词,以空格,tab隔开都可以.生成分词后的语料 2 训练 对分词后的语料test.txt 进行训练得到模型文件vectors.bin /word2vec -train ...